<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下無法顯示
    主站蜘蛛池模板: 久久天天躁狠狠躁夜夜免费观看| 最新免费jlzzjlzz在线播放| 亚洲精品中文字幕麻豆| 中文字幕人成无码免费视频| 一级做a爰片久久毛片免费陪| 亚洲AV无码乱码在线观看裸奔| 无码中文在线二区免费| 久久er国产精品免费观看8| 亚洲小说图片视频| 亚洲精品国产V片在线观看| 久久精品免费一区二区| 成年免费大片黄在线观看com| 亚洲无线一二三四区| 久久影院亚洲一区| 女人与禽交视频免费看| 久久国产精品免费视频| 国产亚洲男人的天堂在线观看| 亚洲精品天天影视综合网| 亚洲成aⅴ人片久青草影院| 国产成人精品免费视频网页大全| eeuss影院ss奇兵免费com| 亚洲 欧洲 日韩 综合在线| 亚洲韩国精品无码一区二区三区 | 亚洲精品无码国产片| 国产av无码专区亚洲av桃花庵| 国产高清免费观看| 国产h视频在线观看网站免费| 黄色视屏在线免费播放| 亚洲AV日韩综合一区| 亚洲伊人久久大香线焦| 亚洲AV无码国产精品麻豆天美| 亚洲精品乱码久久久久久不卡| 成人免费一区二区无码视频| 免费女人高潮流视频在线观看 | 美女视频黄a视频全免费网站色窝| 亚洲精品精华液一区二区| 亚洲欧洲精品国产区| 亚洲成a人片在线观看日本| 在线精品亚洲一区二区小说| 免费人成网站7777视频| 国产高清免费的视频|