日期:2014-05-16  浏览次数:20484 次

【非小白】关于getElementById获取不到对象
页面中有两段js程序代码
1:实现div间的样式切换
 function show_menuc(id1, id2, index, count, classcurrent, classname) {
          for (var i = 0; i < count; i++) {
              document.getElementById(id2.toString() + i).style.display = "none";
              document.getElementById(id1.toString() + i).className = classname;
          }
          document.getElementById(id2.toString() + index).style.display = "block";
          document.getElementById(id1.toString() + index).className = classcurrent;
      }
2、控制页面呈现(调试时为了避免问题故意写复杂了,各位可以无视语法。。)
function changePic(i, j, l) {
        var ij = "pic" + i + j;
        var ijl = "txtpicUrl" + i + j + l;
        var titleijl = "txtTitle" + i + j + l;
        var titleij = "spTitle" + i + j;
        var spijl = "txtDes" + i + j + l;
        var spij = "spDes" + i + j;
        var title = document.getElementById(titleijl).value;
        var imgUrl = document.getElementById(ijl).value;
        var des = document.getElementById(spijl).value;
        document.getElementById(ij).src = imgUrl;
        document.getElementById(spij).innerHTML = des;
        document.getElementById(titleij).innerHTML = title;
    }

页面中便是各种id的div框等元素(命名绝无重复)
问题在于,页面首次加载时方法1可以完美运行,但当触发了点击事件(方法2)后,除最后一个元素的点击事件外,其余事件均会在方法1的循环中,提示找不到对象错误,但是同时对象肯定是存在的,此现象只在ie中出现

试问:出现此种原因根源何在?为何页面加载方法2会影响方法1的循环获取对象部分?

烦请各位大侠前来支招,小弟在此先谢过了

------解决方案--------------------


把你的代码拷了份到本地看,发现你的span没有结束标签,所以在你调用ChangePic方法时document.getElementById(spij).innerHTML = des;把后面所有的内容都替换为des了。firefox,google可能会自动把没有结束标签的HTML补全,但是IE好像这样做。你把上面那个位置的span补全,看下还有没有问题。

下面我调试代码截图


第一个alert


第二个alert,把span后面的HTML少了一段