<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    JAVA涂鴉
    關于JAVA的點點滴滴
    posts - 50,  comments - 689,  trackbacks - 0

    ajax確實是個很好的技術,在提高客戶的體驗度上面能做很多以前不能做或者不好做的事情。出現(xiàn)提示頁面就是一個很好的示例。需要制作提示頁面的地方其實很多,但以前大多是要求用戶點擊相關信息進入詳細信息頁面察看,然后返回,再點擊其他的信息察看詳細信息頁面。這樣就降低了客戶的體驗度,在沒有ajax的時候,我們是勸導客戶只能這么做。

    現(xiàn)在用ajax就可以很輕松的解決這個問題了。
    我的平臺仍然是struts+spring+hibernate,但ajax打交道的主要仍是struts,至于后臺的DAO怎么寫,我就不貼了,因為比較簡單。

    我的實現(xiàn)方式是當鼠標移動到圖片上時,就會出現(xiàn)提示信息,移開,提示信息就關閉。

    效果:
    鼠標沒有移動到圖片的效果
    ts1.JPG

    鼠標移動到圖片上的效果
    ts2.JPG

    主要代碼
    jsp頁面:

    < td?width = " 15% " ?align = " center " ? >
    ????
    < a?href = " javascript:btn_AddNewBlueprintOrCommentary('<bean:write?name= " element " ?property= " id.tbBlueprintId " />'); " >< font?color = " green " > [說明書] </ font ></ a >
    ????
    < img?src = " ../images/task.gif " ?onMouseOver = " btn_getCommentary(this,'<bean:write?name= " element " ?property= " id.tbBlueprintId " />'); " ?onMouseOut = " btn_clearData(); " />
    ???
    </ td > ?

    js代碼:
    function?setData(commentaryData){
    ????btn_clearData();
    ????setOffsets();
    ????var?xmlDoc
    =commentaryData.documentElement;
    ????
    ????var?val
    =xmlDoc.getElementsByTagName('value')[0].firstChild.data;
    ????
    if(val==1){
    ????????var?ID
    =xmlDoc.getElementsByTagName('ID');
    ????????var?PLACE
    =xmlDoc.getElementsByTagName('PLACE');
    ????????var?MEMO
    =xmlDoc.getElementsByTagName('MEMO');
    ????????
    ????????
    //alert(ID[0].firstChild.data);
    ????????var?row,row2,row3;
    ????????var?iddata,placedata,memodata;
    ????????
    //alert(dataDiv.innerHTML);
    ????????for(var?i=0;i<ID.length;i++){
    ????????????iddata
    ="說明書ID:?"+ID[i].firstChild.data;
    ????????????placedata
    ="存放位置:?"+PLACE[i].firstChild.data;
    ????????????
    ????????????row
    =createRow(iddata);
    ????????????row2
    =createRow(placedata);
    ????????????
    ????????????dataTableBody.appendChild(row);
    ????????????dataTableBody.appendChild(row2);
    ????????????
    //alert(MEMO[i].firstChild.data);
    ????????????if(MEMO[i].firstChild.data!="1"){
    ????????????????memodata
    ="備注:?"+MEMO[i].firstChild.data;
    ????????????????row3
    =createRow(memodata);
    ????????????????dataTableBody.appendChild(row3);
    ????????????}

    ????????}

    ????}
    else{
    ????????iddata
    ="還沒有記錄!?";
    ????????row
    =createRow(iddata);
    ????????
    ????????dataTableBody.appendChild(row);
    ????}

    }


    var?dataDiv;
    var?dataTable;
    var?dataTableBody;
    var?offsetEl;

    function?btn_clearData()
    {
    ????var?ind
    =dataTableBody.childNodes.length;
    ????
    for(var?i=ind-1;i>=0;i--){
    ????????dataTableBody.removeChild(dataTableBody.childNodes[i]);
    ????}

    ????dataDiv.style.border
    ="none";
    }


    function?setOffsets()
    {
    ????var?end
    =offsetEl.offsetWidth;
    ????var?top
    =calculateOffsetTop(offsetEl);
    ????dataDiv.style.border
    ="black?1px?solid";
    ????dataDiv.style.left
    =end+370+"px";
    ????dataDiv.style.top
    =top+"px";
    ????
    //alert(dataDiv.innerHTML);
    }


    function?calculateOffsetTop(field)
    {
    ????
    return?calculateOffset(field,"offsetTop");
    }


    function?calculateOffset(field,attr)
    {
    ????var?offset
    =0;
    ????
    while(field){
    ????????offset
    +=field[attr];
    ????????field
    =field.offsetParent;
    ????}

    ????
    return?offset;
    }


    function?createRow(data)
    {
    ????var?row,cell,txtNode;
    ????row
    =document.createElement("tr");
    ????cell
    =document.createElement("td");
    ????
    ????cell.setAttribute(
    "bgcolor","#FFFAFA");
    ????cell.setAttribute(
    "border",0);
    ????
    ????txtNode
    =document.createTextNode(data);
    ????cell.appendChild(txtNode);
    ????row.appendChild(cell);
    ????
    ????
    return?row;
    }

    ?

    action代碼:

    ?

    /**?
    ?????*?獲得所有說明書
    ?????
    */

    ????
    public?ActionForward?doGetCommentary(
    ????????????ActionMapping?mapping,
    ????????????ActionForm?form,
    ????????????HttpServletRequest?req,
    ????????????HttpServletResponse?res)
    {
    ????????String?blueprintID
    =(String)req.getParameter("blueprintID");
    ????????String?folderID
    =(String)req.getParameter("folderID");
    ????????String?fileboxID
    =(String)req.getParameter("fileboxID");
    ????????res.setContentType(
    "text/xml;charset=GB2312");
    ????????res.setHeader(
    "Cache-Control","no-cache");
    ????????String?xml
    ="<?xml?version=\"1.0\"?encoding=\"GB2312\"?>";
    ????????xml
    +="<response>";
    ????????logger.info(
    "CommentaryAction_doGetCommentary_藍圖ID和文檔ID和文檔盒ID:?"+blueprintID+";"+folderID+";"+fileboxID);
    ????????List?commlist
    =commentaryService.getAllCommentary(blueprintID,folderID,fileboxID);
    ????????
    int?i=commlist.size();
    ????????
    if(i==0){
    ????????????xml
    +="<value>0</value>";
    ????????????xml
    +="</response>";
    ????????}
    else{
    ????????????Iterator?it
    =commlist.iterator();
    ????????????
    while(it.hasNext()){
    ????????????????TbExponent?te
    =(TbExponent)it.next();
    ????????????????xml
    +="<ID>"+te.getId().getTbExponentFileId()+"</ID>";
    ????????????????xml
    +="<PLACE>"+te.getTbExponentPlace()+"</PLACE>";
    ????????????????
    if(!te.getTbExponentMemo().equals(""))
    ????????????????????xml
    +="<MEMO>"+te.getTbExponentMemo()+"</MEMO>";
    ????????????????
    else
    ????????????????????xml
    +="<MEMO>"+1+"</MEMO>";
    ????????????????
    //logger.info("CommentaryAction_doGetCommentary:"+xml);
    ????????????}

    ????????????xml
    +="<value>1</value>";
    ????????????xml
    +="</response>";
    ????????????logger.info(
    "CommentaryAction_doGetCommentary:"+xml);
    ????????}

    ????????
    ????????
    try?{
    ????????????res.getWriter().write(xml);
    ????????}
    ?catch?(IOException?e)?{
    ????????????????????????e.printStackTrace();
    ????????}

    ????????
    return?null;
    ????}

    ?

    關鍵的代碼已經(jīng)貼出,希望對大伙有用。

    參考書籍:《ajax基礎教程》

    posted on 2006-08-04 09:35 千山鳥飛絕 閱讀(1804) 評論(0)  編輯  收藏 所屬分類: Ajax
    正在閱讀:



    <2025年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    常用鏈接

    留言簿(35)

    隨筆檔案

    文章分類

    文章檔案

    好友的blog

    我的其他blog

    老婆的Blog

    搜索

    •  

    積分與排名

    • 積分 - 775125
    • 排名 - 56

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲乱码中文字幕综合| 免费看片免费播放| 国产亚洲精品美女久久久 | 亚洲w码欧洲s码免费| 亚洲s色大片在线观看| a级日本高清免费看| 亚洲av无码专区国产乱码在线观看 | 亚洲中文无码a∨在线观看| 18成禁人视频免费网站| 亚洲狠狠狠一区二区三区| 在线永久看片免费的视频| 亚洲中文无码av永久| 日韩电影免费在线观看视频| 亚洲av无码偷拍在线观看| 国产精品久久久久影院免费| 黄色三级三级免费看| 中文字幕亚洲激情| 91成人免费观看在线观看| 亚洲AV无码精品无码麻豆| 99久久久国产精品免费牛牛| 亚洲一区在线免费观看| 成人免费视频国产| 国产区在线免费观看| 久久亚洲精精品中文字幕| 中文字幕无码成人免费视频| 丰满亚洲大尺度无码无码专线| 国产v片免费播放| 精品无码一级毛片免费视频观看| 国产AV无码专区亚洲AVJULIA| 最近中文字幕2019高清免费| 亚洲人片在线观看天堂无码| 亚洲国产主播精品极品网红| 波多野结衣免费一区视频| 亚洲av日韩av综合| 亚洲AⅤ无码一区二区三区在线| 久久久国产精品福利免费| 日韩亚洲产在线观看| 亚洲另类激情专区小说图片| 久久久久免费看成人影片| 亚洲av乱码一区二区三区按摩| 亚洲精品国产品国语在线|