Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/423.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript style.display为空-尝试在数组上循环并更改显示属性_Javascript_Css_For Loop_Show Hide - Fatal编程技术网

Javascript style.display为空-尝试在数组上循环并更改显示属性

Javascript style.display为空-尝试在数组上循环并更改显示属性,javascript,css,for-loop,show-hide,Javascript,Css,For Loop,Show Hide,我又问了一个新手问题 只是检查我下面的代码是否可行。即创建一个由“document.GetElementById”组成的新数组。由于我对javascript相当陌生,我的代码通常有点冗长,所以请原谅我的混乱 下面的代码出现错误“style.display”为“null”或不是对象。 有人能看到我明显的缺失或做错了什么吗 function Test(){ if(document.getElementById('inClient').value !=="FormViewer"){ var

我又问了一个新手问题

只是检查我下面的代码是否可行。即创建一个由“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"
         }
      }
   }
}
功能测试(){
if(document.getElementById('inClient').value!=“FormViewer”){
var visible=新数组(“document.getElementById('personal2').value”,“document.getElementById('change_hours2').value”);
var change=new数组(“document.getElementById('personal').value”,“document.getElementById('change_小时').value”);

对于(var i=0;i您正在向数组中添加字符串,而不是对DOM元素的引用。删除引号和
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"
         }
      }
   }
}
功能测试(){
if(document.getElementById('inClient').value!=“FormViewer”){
var visible=新数组(document.getElementById('personal2')、document.getElementById('change_hours2');
var change=新数组(document.getElementById('personal')、document.getElementById('change_hours');

对于(var i=0;i您应该这样使用,没有双qoutes,它应该可以工作

 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);

执行
警报(更改)
然后看看数组包含什么。它不包含DOM元素。对于
可见的
,它也不包含DOM元素的值。非常感谢,这是我通常忽略的一件小事。如果允许,我会接受你的回答。@MarkWalters:还有一件事,不要使用
新数组
,使用数组文字
var可见=[…,…]
@Felix Kling:不确定我为什么要使用新数组。但是你能解释一下为什么我应该使用数组文本吗?@Mark:数组的构造函数是不明确的。如果你只传递一个值,它会尝试将数组的长度设置为该值。如果你传递两个或更多的值,它会将这些值添加到数组中。这很容易被忽略错误的广告。数组文字也写得更短。感谢Felix的解释