2012-01-13 53 views
0

我就在这这是为什么来了空

document.getElementById("Attachment" + x).style.display = "none"; 

我真的不想写这5次行空的错误。如果我这样做,这条线就行。

document.getElementById("Attachment1").style.display = "none"; 

我在这里错过了什么?为了保持这个简短,我只包含了错误所在的循环。

for (x = 0; x < 5; x++) 
{ 

    if(showHideArray[x] &gt; 0) 
    { 
    document.getElementById("Attachment" + x).style.display = "none"; 
    } 
    else { 
     document.getElementById("Attachment" + x + "If").style.display = "none"; 
     } 

} 

回答

3

您可能没有ID为Attachment0的元素。

+0

你是对的,先回答。我确实拥有一个带有Attachment0标识的元素。谢谢您的帮助! – user1015711 2012-01-13 23:27:38

0

如果没有给定id的元素,则此函数返回null。所以如果我是你,我会打印出document.getElementById("Attachment" + x).style.display = "none";

向我们展示它输出的内容。但一个解决方案,将prob工作是:

for (x = 0; x < 5; x++) 
{ 

    if(showHideArray[x] &gt; 0) 
    { 
    var y = "Attachment" + x; 
    document.getElementById(y).style.display = "none"; 
    } 
    else { 
     var z = "Attachment" + x + "If"; 
     document.getElementById(z).style.display = "none"; 
     } 

} 

我会尝试这两件事情。

0

您正在尝试访问null的属性style,这会引发错误。在尝试访问属性之前检查该元素是否存在。

for (x = 0; x < 5; x++) { 
    var elem = document.getElementById("Attachment" + x + (showHideArray[x] > 0 ? "If" : "")); 

    if(elem) { 
     elem.style.display = "none"; 
    } 
} 
相关问题