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

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

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

    posts - 165, comments - 198, trackbacks - 0, articles - 1
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    javascript xpath 自定義方法(級連下拉框)

    Posted on 2007-08-14 14:29 G_G 閱讀(1199) 評論(1)  編輯  收藏 所屬分類: xml Related
    問題: IE,FF用 xpath 在javascript動態解讀
    解決: 自定義jsXpath 類

    js.js
    //關鍵是 jsXpath 類
    //使用是 new 并 給屬性 domx 值 DOMXml
    //var nodes = obj.getPathNodes( xpath ); 就是 xpath語句如:
    //beans/bean
    //再 var node = obj.next( nodes )
    //node 可以使用了

    var?dom?=?null?;
    var?jp?=?new?jsXpath();

    function?load(ul){
    ????
    new?Ajax.Request(
    ????????ul,
    ????????{
    ????????????method:?'get',
    ????????????onComplete:?action??????????????
    ????????});????
    }

    function?action(req){
    ?
    var?path?=?"?/beans/bean[string-length(@xid)<3]?";
    ?dom?
    =?req.responseXML?;
    ?jp.domx?
    =?dom?;?
    ?
    var?list?=??jp.getPathNodes(path)?;
    ?createSelect(jp,list,?document.getElementById('ii')?);
    //建 select ii
    }

    function?jsXpath(){
    ????
    this.nexti?=?0?;
    ????
    this.domx?=?null?;
    ????
    ????
    this.getPathNodes?=?function(path){
    ????????
    var?val?=null?;
    ????????
    if(?navigator.appName.indexOf('Microsoft')==?-1?){
    ???????????val??
    =?document.evaluate(path,this.domx?,null,XPathResult.ANY_TYPE,null?)?;
    ????????}
    else{
    ????????????
    this.domx.setProperty("SelectionLanguage","XPath");
    ????????????val?
    =?this.domx.documentElement.selectNodes(?path?)?;
    ????????}
    ????????
    return?val?;
    ????}
    ????
    ????
    this.next?=??function(domp,ii){
    ????????
    if(?navigator.appName.indexOf('Microsoft')==?-1?){
    ???????????
    return?domp.iterateNext()?;
    ????????}
    else{
    ????????????
    if(ii!=null)?this.nexti?=?ii?;
    ????????????
    return?domp[this.nexti++];
    ????????}
    ????}
    }

    function?createSelect(xpath,doms,sele){
    ????????
    try{
    ????????????
    var?item=xpath.next(doms);
    ????????????
    while(item){
    ????????????????
    var?opt?=document.createElement('option');
    ????????????????
    var?text=document.createTextNode(?item.firstChild.nodeValue??);
    ????????????????opt.appendChild(text);
    ????????????????opt.setAttribute(
    "value",item.getAttribute('xid')?);
    ????????????????sele.appendChild(opt);
    ????????????????
    ????????????????item?
    =?xpath.next(doms);
    ????????????}
    ????????}
    catch(e){dump(e);}
    }

    //建 select jj 與 select ii的 selectedIndex 有關
    function?duSel(){
    ????????
    var?sele?=?document.getElementById('jj');
    ????????
    var?sdom?=?document.getElementById('ii');
    ????????
    ????????
    var?num?=?sele.getElementsByTagName('option').length-1;?
    ????????
    for(var?i=num;?i>0?;?i--)?
    ????????????sele.remove(
    1);?
    ????????
    ?????????
    var?skey?=?sdom.options[?sdom.selectedIndex?].value

    ?????????
    var?path?=?"/beans/bean[??starts-with(?@xid?,?'"+skey+"')?and?string-length(@xid)>3??]";

    ?????????
    var?jpp?=?new?jsXpath();
    ?????????jpp.domx?
    =?dom?;?
    ?????????
    var?lj?=?jpp.getPathNodes(path);

    ?????????createSelect(jpp,lj,?document.getElementById('jj')?);
    }

    xml.xml
    <?xml?version="1.0"?encoding="GB2312"?standalone="no"?>
    <beans>
    ????
    <bean?xid='01'?>北京局</bean>
    ????
    <bean?xid='0101'>ftd</bean>
    ????
    <bean?xid='0102'>tsd</bean>

    ????
    <bean?xid='02'>沈陽局</bean>
    ????
    <bean?xid='0202'>sy1</bean>
    ????
    <bean?xid='0203'>sy2</bean>
    ????
    <bean?xid='0204'>sy3</bean>
    </beans>

    xpath.html //級連的 下拉框出來了
    <html>
    ????
    <head>
    ????????
    <meta?http-equiv="Content-Type"?content="text/html;?charset=gb2312"?/>
    ????????
    <script?language='JavaScript'?src="js/js.js"></script>
    ????????
    <script?language="JavaScript"?src="lib/prototype/prototype.js"></script>
    ????????
    <script?language='JavaScript'?src='js/xpath.js'></script>
    ????
    </head>

    ????
    <body?onload='load(?"./xml/xml.xml"?)'>????
    ????????
    <select?id="ii"?onchange='duSel();'>
    ?????????????
    <option?value=""?>--段選擇--</option>
    ????????
    </select>
    ????????
    <select?id="jj">
    ?????????????
    <option?value=""?>--車間選擇--</option>
    ????????
    </select>
    ????
    </body>
    </html>

    心得: xpath 是好東西 好東西啊

    評論

    # re: javascript xpath 自定義方法(級連下拉框)  回復  更多評論   

    2009-06-11 13:43 by 上手
    好像還缺少倆文件!
    在IE6下無法顯示
    主站蜘蛛池模板: 亚洲av最新在线观看网址| 亚洲国产精品成人综合色在线婷婷 | 91精品全国免费观看青青| 国产一级淫片a视频免费观看| 99在线视频免费观看视频| 亚洲自偷自拍另类图片二区| 最刺激黄a大片免费网站| 亚洲精品韩国美女在线| 国产91色综合久久免费| youjizz亚洲| 永久免费毛片手机版在线看| 国产精品亚洲二区在线| 亚洲日本中文字幕一区二区三区| 亚洲A∨无码无在线观看| 久久青草免费91观看| 亚洲福利电影一区二区?| 一个人看的www在线观看免费 | 国产午夜亚洲精品理论片不卡| 久久精品国产亚洲av水果派| 免费人成视频在线观看网站| 亚洲明星合成图综合区在线| 好爽…又高潮了免费毛片| 男女超爽视频免费播放| 亚洲中文字幕第一页在线| 一级毛片免费不卡在线| 四虎必出精品亚洲高清| 国产在线a不卡免费视频| 香蕉免费一级视频在线观看| 亚洲av永久无码精品漫画| 国产片AV片永久免费观看| 国产亚洲精品国产福利在线观看| 在线观看视频免费完整版| 久久人午夜亚洲精品无码区| 亚洲精品无码久久久久sm| 国产乱码免费卡1卡二卡3卡| 免费人妻精品一区二区三区| 久久亚洲伊人中字综合精品| 18禁成年无码免费网站无遮挡 | 国产精品视频免费一区二区三区| 亚洲色图校园春色| 国产精品无码一区二区三区免费 |