想向SELECT中的OPTIONS添加元素S2.options.add(S1.options[index], index);但add的第一个参数要求是 Element,上面的代码会提示参数错误提示如果是var oOption = document.createElement("OPTION");
S2.options.add(oOption, index);
oOption.value = S1.options[indxe].value;
oOption.innerHTML = S1.options[index].innerHTML;这样虽然可以
但是如果option里还有title什么的,甚至是自定义的属性,就无法都写出来了啊...有什么办法可以直接把Object转换成Element吗??var oOption = document.createElement("OPTION");
S2.options.add(oOption, index);
oOption = S1.options[indxe]测试过上面这样...同样提示参数错误...

解决方案 »

  1.   

    var oOption = document.createElement("OPTION");
    S2.options.add(oOption, index);
    S2.options[index].mergeAttributes(S1.options[index])
    S2.options[index].innerHTML = S1.options[index].innerHTML;
    目前通过此方法实现上面的要求,所有属性连自定义属性都被复制过去
      

  2.   


    var oOption = document.createElement("OPTION");
    oOption.setAttribute("title", "is title");
    S2.options.add(oOption, index);
    S2.options[index].mergeAttributes(S1.options[index])
    S2.options[index].innerHTML = S1.options[index].innerHTML;
      

  3.   

    update昨天测试的时候,发现用
    var oOption = document.createElement("OPTION");
    S2.options.add(oOption, index);
    S2.options[index].mergeAttributes(S1.options[index])
    S2.options[index].innerHTML = S1.options[index].innerHTML;
    这种方法的话,既然会出现innerHTML有时候显示不出来的情况,至少在IE8下确实发生了
    我是弄了4个SELECT,然后添加的时候前2个SELECT确实添加了该option,而且也显示正常
    但是后面2个就变成空白,但是title还是显示出来了
    测试在添加完后
    alert(S2.options[index].innerHTML);
    也正确,但是页面上看到的确实是空白...
    没办法,后来改成
    var oOption = new Option(S1.options[index].firstChild.data);
    S2.options.add(oOption, index);
    S2.options[index].mergeAttributes(S1.options[index]);
    如果new Option的时候使用innerHTML的话,则会把如 这样的字符也显示出来,而用innerText的话虽然显示正常,但是innerText是IE独有的属性,最后发现firstChild.data这个基本上全浏览器都有的属性(其实用S1.options[index].txt也是可以的)