<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 閱讀(1200) 評論(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下無法顯示
    主站蜘蛛池模板: 免费萌白酱国产一区二区三区| 午夜网站在线观看免费完整高清观看 | 国产大片51精品免费观看| 日本中文字幕免费看| 亚洲人成依人成综合网| 午夜男人一级毛片免费| 三根一起会坏掉的好痛免费三级全黄的视频在线观看 | 国产一区二区三区在线观看免费 | 美女视频黄a视频全免费| 香蕉国产在线观看免费| 亚洲高清无在码在线无弹窗| 免费中文字幕在线观看| 97精品免费视频| 特级毛片在线大全免费播放| 亚洲精品中文字幕无乱码| 亚洲精品麻豆av| 毛片a级三毛片免费播放| 国产免费一区二区视频| 国产精品无码亚洲一区二区三区| 亚洲天天在线日亚洲洲精| 亚洲国产精品碰碰| 色窝窝免费一区二区三区| 久久国产精品成人免费| 国产亚洲Av综合人人澡精品| 亚洲手机中文字幕| 亚洲国产精品乱码一区二区 | 国产亚洲精品a在线观看 | 亚洲爆乳无码专区| 免费大黄网站在线观| 69式国产真人免费视频| 国产免费网站看v片在线| 国产亚洲日韩在线a不卡| 2020天堂在线亚洲精品专区| 亚洲国产精品第一区二区| 久久乐国产精品亚洲综合| 成人免费看片又大又黄| 91免费人成网站在线观看18| 国产在线观看免费视频软件| 国产精品成人69XXX免费视频| 国产精品亚洲一区二区无码| 色在线亚洲视频www|