javascript - style.display 为 null - 尝试遍历数组并更改显示属性

标签 javascript css for-loop show-hide

我的另一个新手问题。

只是检查我下面的代码是否可行。即创建一个由“document.GetElementById”组成的新数组。由于我是 javascript 的新手,我的代码通常有点冗长,所以请原谅我的困惑。

下面的代码显示错误“style.display”为“null”或不是对象。 任何人都可以看到任何明显的我遗漏或做错的事情吗?

function Test(){

if(document.getElementById('inClient').value !=="FormViewer"){

    var visible =new Array("document.getElementById('personal2').value","document.getElementById('change_hours2').value");
    var change = new Array("document.getElementById('personal').value","document.getElementById('change_hours').value");

    for (var i=0; i <visible.length; i++) {
        if(visible[i]!==""){
            change[i].style.display = "block"
         }
      }
   }
}

基本上,如果隐藏字段('personal2' 等)为空,我希望 div/部分('personal' 等)保持隐藏状态,但如果它包含文本,那么我想显示该部分。

提前致谢

最佳答案

您正在向数组中添加字符串而不是对 DOM 元素的引用。删除引号和 value 属性,它将起作用。您必须在迭代中检查 value

function Test(){

if(document.getElementById('inClient').value !=="FormViewer"){

    var visible =new Array(document.getElementById('personal2'), document.getElementById('change_hours2'));
    var change = new Array(document.getElementById('personal'), document.getElementById('change_hours'));

    for (var i=0; i <visible.length; i++) {
        if(visible[i].value != ""){
            change[i].style.display = "block"
         }
      }
   }
}

关于javascript - style.display 为 null - 尝试遍历数组并更改显示属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6409033/

相关文章:

javascript - 使用 jQuery get(0) 索引暂停和播放多个 HTML5 视频?

html - 如何将两个 float 跨度之间的跨度居中并且容器是固定的?

css - 使用谷歌字体 API

c++ - for循环C++中的额外增量

javascript - Javascript 中的埃拉托色尼筛法?

javascript - 我应该在 asp mvc 中使用不显眼的 javascript 而不是编写自己的验证代码吗?

javascript webkitTransform 样式属性未设置 - 范围?

javascript - 如何将来自多个 AJAX 请求的数据使用到不同的函数中或创建要全局使用的值数组

jquery - 用 :before 创建一个箭头

c++ - 对 CGAL 类型使用基于范围的 for 循环