TicoM
2017-01-13 10:28
代码:
<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的{}里面,功能就能实现了。
这是为什么呢?
在函数外定义 的变量 要是想在函数内部调用 你在外部定义时候加个global 就可以了
var global char=document.getElementById("con");.....其实就是局部变量和全局变量的意思一样,只是形式跟我们平时看到不一样而已,实质还是一样的
贴出来的代码已经是全局变量了。
问题应该出在,你的<script>标签写在head里面或者p标签前面。
原因:
浏览器解析HTML文档时,从上往下,由于script在前,所以先解析script,当解析var char=document.getElementById("con");时,浏览器无法抓取到id“con”,因为此id还未解析,所以返回给char变量一个null值。因此,后续点击button也不会出现任何效果。
可以不用加global,通过这个问题可以看出你对如何定义变量,变量的作用域,什么是全局变量,什么是局部变量不是很清楚。 在函数外围的,通过 var 变量名=value; 是全局变量,也就是说,这个变量作用于整个代码段;在函数内部,var 变量名=value; 这种叫做局部变量,它的作用范围仅限在函数内部,离开函数,则没定义。如果你一定要在一个函数内部定义一个全局变量,那么则把var 去掉。但是一般我们不会这么用。你在这里犯的错误在于,你把在函数内部定义全局变量的方式,放在了函数外部,程序自然识别不了。
在函数外定义 的变量 要是想在函数内部调用 你在外部定义时候加个global 就可以了
var global char=document.getElementById("con");
JavaScript入门篇
739814 学习 · 9566 问题
相似问题