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全局变量函数

解决方案 »

  1.   

    应该是在你代码跑到var I_form=document.getElementById("myform");的时候这个节点还没生成。个人觉得是你这个节点完全是后期通过JS插入到DOM里面的,当你调用setAgeVisibility的时候,你是确定了这个节点已经被插入进去了,所以在里面写document.getElementById("myform")是可以找到节点的。但是放在外面的时候全局变量document.getElementById("myform")没找到,I_form所以是undefined,所以在里面直接用I_form会报错。
      

  2.   

    sorry。。我刚学javascript,,所以你说的我完全没听懂
      

  3.   

    在运行js文件的时候不是应该从开始往下运行吗还有javascript不像java和c++一样全局变量不是应该先处理吗
      

  4.   

    那看来你只适合这种方式
    var I_form;
    window.onload=function(){
       I_form=document.getElementById("myform");
    }
    function setAgeVisibility()
     {
    if (I_form.pname.value==""){...    }}
      

  5.   


    是的啊。但是代码跑到那一行的时候,document.getElementById找不到这个dom节点,I_form指向的是个空啊,所以他就一直是空了。你把这JS放到页面最下面试试吧。或者把这段代码放到
    var I_form;//先声明变量
    function setAgeVisibility()
     {
    if (I_form.pname.value==""){...    }}
    window.onload = function(){
        I_form=document.getElementById("myform");//页面加载完毕后对变量进行赋值
    }
      

  6.   

    是不是js文件加载到var I_form=document.getElementById("myform");时,,html文件还没加载到带有id=“myform”的部分????
      

  7.   

    如果你们实在不知道怎么说,,那给我说下dom节点吧
      

  8.   

    javascript  回复获取积分
      

  9.   


    恩,是这个道理。把赋值的操作放到window.onload里面就保证了肯定有那个form存在。