我有一系列div,我用css display隐藏了:none;.
<div id="" class="hidden_row">some code</div>
<div id="" class="hidden_row">some code</div>
<div id="" class="hidden_row">some code</div>
Run Code Online (Sandbox Code Playgroud)
我也有一个onclick"addRow();"按钮 通过将其css声明更改为"display:block;"来设计为在每次单击时顺序显示一个隐藏行的函数.javascript看起来像这样:
function addRow(){
var hiddenrow = getElementsByClassName(document, "*", "hidden_row");
for(var i=0; i< hiddenrow.length; i++){
if(hiddenrow[i].style.display = "none"){
hiddenrow[i].style.display = "block";
}
}
}
Run Code Online (Sandbox Code Playgroud)
但是,该函数在执行时不会更改数组的1个成员(这是我想要的),它会找到隐藏的行并将它们全部显示出来.如何调整我的功能以使其按预期工作?
你的if语句中有拼写错误
if(hiddenrow[i].style.display = "none"){
Run Code Online (Sandbox Code Playgroud)
应该
if(hiddenrow[i].style.display == "none"){
Run Code Online (Sandbox Code Playgroud)
编辑:请注意.style.display仅检查内联样式,因此您必须检查
if(hiddenrow[i].style.display != "block"){
Run Code Online (Sandbox Code Playgroud)
相反,因为这更好地支持你想要的
正如达哈泽所说,如果你想一次只展示一个,你需要break;在找到你想要的之后再放一个.
工作JsFiddle:http://jsfiddle.net/STGhq/
和你修改过的功能
function addRow(){
var hiddenrow = document.getElementsByClassName("hidden_row");
for(var i=0; i< hiddenrow.length; i++){
if(hiddenrow[i].style.display != "block"){
hiddenrow[i].style.display = "block";
break;
}
}
}?
Run Code Online (Sandbox Code Playgroud)
element.style只提取当前内联样式的问题,我发现这篇文章通过使用window.getComputedStyle或者element.currentStyle两者来解决它,它们都引入了当前计算的样式,而不仅仅是内联声明.
使用新代码http://jsfiddle.net/STGhq/2/工作jsFiddle
| 归档时间: |
|
| 查看次数: |
94 次 |
| 最近记录: |