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

js新人,请教一个getElementById取得变量的问题
刚刚接触js,感觉js相当高深啊,搜了很多都没太看懂。在处理问题的时候遇到这样问题,需要getElementById()通过变量来获取Id的名称。
比如Id名称是list_x 
通过for循环来进行 list_1到list_4遍历,进行属性处理。
这里尝试这样处理
s=3;   //这个值是传过来的,而且确定已经传过来
for (var i=0; i<4;i++){
if(i == s){
document.getElementById('list_'+i).className='newstyle'; //更改新的样式
}
else{
document.getElementById('list_'+i).className='oldstyle'; //还原样式
}
}

但是提示getElementById()值是空的。
修改’list_'+i 为'list_3’,是可以执行的。
然后尝试用赋值来确定 'list_'+i,发现值是对的。初步断定可能是getElementById()即使变量值也需要添加‘号才能正常处理。
请问各位大大,有什么解决办法没?
------解决方案--------------------
s=3;   //这个值是传过来的,而且确定已经传过来
for (var i=0; i<4;i++){
var str='list_'+i;
if(i == s){
document.getElementById(str).className='newstyle'; //更改新的样式
}
else{
document.getElementById(str).className='oldstyle'; //还原样式
}
}

这样试试,若果不可以,应该是别的问题。
------解决方案--------------------
你只有  list_1 到 list_4
而循环是从 0 开始的

当 i 等于 0 时,'list_'+i 为 lisit_0 
显然没有这个 id
 
------解决方案--------------------
你要保证你的页面上有
ID从list_0 到 list_3的元素,保证获取元素不会出现问题