<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下無法顯示
    主站蜘蛛池模板: 国产99视频精品免费专区| 免费精品无码AV片在线观看| 黄色毛片免费观看| a毛片免费观看完整| 16女性下面无遮挡免费| 噼里啪啦免费观看高清动漫4 | 老湿机一区午夜精品免费福利| 羞羞网站免费观看| 久久久久久AV无码免费网站下载 | 亚洲爆乳无码一区二区三区| 亚洲日本国产精华液| 蜜桃传媒一区二区亚洲AV| 成人电影在线免费观看| 成人午夜大片免费7777| 区久久AAA片69亚洲| 亚洲一卡一卡二新区无人区| 久久久久久毛片免费看| 国产成人免费福利网站| 亚洲国产美女精品久久| 国产特黄一级一片免费| 免费爱爱的视频太爽了| 亚洲精品国产精品国自产网站| 国产精品一区二区三区免费| 免费观看男人免费桶女人视频 | 亚洲日韩AV一区二区三区中文| 免费av片在线观看网站| 国产黄色片在线免费观看| 亚洲日本国产综合高清| 一级毛片在线观看免费| 亚洲AV人无码综合在线观看| 精品多毛少妇人妻AV免费久久| 亚洲成a人片在线观看日本麻豆| 中文字幕在线观看亚洲日韩| 亚洲高清中文字幕免费| 亚洲国产精品乱码在线观看97| 色欲色香天天天综合网站免费 | 国产成人免费ā片在线观看| 亚洲精品久久久久无码AV片软件| 91在线视频免费播放| 亚洲欧美自偷自拍另类视| 日韩成全视频观看免费观看高清|