为了账号安全,请及时绑定邮箱和手机立即绑定

为什么变量在函数外定义就得不到结果?

代码:    

<script type="text/javascript"> 

        var char=document.getElementById("con");

        function texthide()

        {

            char.style.display="none";

        }

        function textshow()

        {

            char.style.display="block";

        }

    

    </script> 

疑问:因为两个function调用的对象都是p标签,所以我就在外面定义了char=document.getElementById("con");但是运行的时候发现,这样出来的按钮没有功能,也就是点隐藏、显示都没用,只能点着玩儿= =

而如果把char=document.getElementById("con");分别放到两个function的{}里面,功能就能实现了。

这是为什么呢?

正在回答

4 回答

在函数外定义 的变量 要是想在函数内部调用 你在外部定义时候加个global 就可以了 

var global char=document.getElementById("con");.....其实就是局部变量和全局变量的意思一样,只是形式跟我们平时看到不一样而已,实质还是一样的


0 回复 有任何疑惑可以回复我~
#1

TicoM 提问者

非常感谢!
2017-01-13 回复 有任何疑惑可以回复我~

贴出来的代码已经是全局变量了。

问题应该出在,你的<script>标签写在head里面或者p标签前面。

原因:

       浏览器解析HTML文档时,从上往下,由于script在前,所以先解析script,当解析var char=document.getElementById("con");时,浏览器无法抓取到id“con”,因为此id还未解析,所以返回给char变量一个null值。因此,后续点击button也不会出现任何效果。

1 回复 有任何疑惑可以回复我~

可以不用加global,通过这个问题可以看出你对如何定义变量,变量的作用域,什么是全局变量,什么是局部变量不是很清楚。 在函数外围的,通过 var 变量名=value; 是全局变量,也就是说,这个变量作用于整个代码段;在函数内部,var 变量名=value; 这种叫做局部变量,它的作用范围仅限在函数内部,离开函数,则没定义。如果你一定要在一个函数内部定义一个全局变量,那么则把var 去掉。但是一般我们不会这么用。你在这里犯的错误在于,你把在函数内部定义全局变量的方式,放在了函数外部,程序自然识别不了。

2 回复 有任何疑惑可以回复我~

在函数外定义 的变量 要是想在函数内部调用 你在外部定义时候加个global 就可以了 

var global char=document.getElementById("con");

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

为什么变量在函数外定义就得不到结果?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信