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

关于js中的全局变量
var I_form=document.getElementById("myform");
function setAgeVisibility()
 {
if (I_form.pname.value==""){...

    }

}
运行是提示I_form.pname.value未定义;
改成
function setAgeVisibility()
 {
if (document.getElementById("myform").pname.value==""){...

    }

}
可以正常运行。。。求大神给原因呢
JavaScript 全局变量 函数

------解决方案--------------------
应该是在你代码跑到var I_form=document.getElementById("myform");的时候这个节点还没生成。

个人觉得是你这个节点完全是后期通过JS插入到DOM里面的,当你调用setAgeVisibility的时候,你是确定了这个节点已经被插入进去了,所以在里面写document.getElementById("myform")是可以找到节点的。

但是放在外面的时候全局变量document.getElementById("myform")没找到,I_form所以是undefined,所以在里面直接用I_form会报错。
------解决方案--------------------
那看来你只适合这种方式
var I_form;
window.onload=function(){
   I_form=document.getElementById("myform");
}
function setAgeVisibility()
 {
if (I_form.pname.value==""){...

    }

}