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

为啥函数外声明了变量,在函数里面不能用,了解一下吧

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>display</title>
    <script type="text/javascript">
    var mychar = document.getElementById("con");
        function hidetext() 
  { 
  mychar.style.display="none";
       
  } 
  function showtext() 
  { 
  mychar.style.display="block";
       
  }
    </script>
</head>
<body> 
    <h1>JavaScript</h1> 
    <p id="con">做为一个Web开发师来说,如果你想提供漂亮的网页、令用户满意的上网体验,JavaScript是必不可少的工具。</p>
    <form>
       <input type="button" onclick="hidetext()" value="隐藏内容" />
       <input type="button" onclick="showtext()" value="显示内容" />
    </form>
</body>
</html>

正在回答

2 回答

因为

步骤一:var mychar = document.getElementById("con");这个语句是把p标签的对象赋值给mycahr。

而这个动作是通过点击“隐藏内容”和“显示内容”来执行的。

你点击隐藏内容执行hidetext()函数,而函数体内就执行了步骤一,然后执行mychar.style.display="none";并隐藏内容。

显示内容也是如此。

你把var mychar = document.getElementById("con");放到函数体外的时候,当你点击隐藏或显示内容按钮的时候,这个语句就没有执行嘛。

这样子就OK了。

var mychar = null;        function hidetext()  		{  		    mychar= document.getElementById("con");            mychar.style.display="none";		}  		function showtext()  		{  		    mychar = document.getElementById("con");            mychar.style.display="block";		}


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

Test_Engineer

var mychar = null; function hidetext() { mychar= document.getElementById("con"); mychar.style.display="none"; } function showtext() { mychar = document.getElementById("con"); mychar.style.display="block"; }
2018-11-25 回复 有任何疑惑可以回复我~
#2

慕仙3797189 提问者 回复 Test_Engineer

你说的这种也是对的,我下午发现另外一种方法,可能是我之前概念的错误吧,是把<script>整体标签放在<p>标签的下面,这样电脑处理程序时,就能识别出<script>中函数外的mychar的变量赋值了。
2018-11-25 回复 有任何疑惑可以回复我~
#3

HungerCheung 回复 慕仙3797189 提问者

牛批~
2018-12-07 回复 有任何疑惑可以回复我~

我也被你的问题困扰了很久....

body中最后加<script>var mychar = document.getElementById("con");</script>就好了

先执行p id=con后才能被getElementById获取到,放在head中先执行getElementById的话根本没有con这个元素。

函数是调用的,顺序不影响执行,所以放在函数中就没有顺序问题了。

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

qq_慕工程9502817

大佬,这是什么原理啊,好神奇啊,求解释
2018-12-16 回复 有任何疑惑可以回复我~
#2

Assain 回复 qq_慕工程9502817

其实这就是一个浏览器解释顺序的一个原理。由于此script标签先于head被浏览器解释了,而根据从上往下解释的顺序,那么是不是先解释head再解释Body的内容?那么是不是就是在script标签被解释后才开始解释body内部的p标签的内容,那么在script语句中的var mychar = document.getElementById("con");又不在函数体内(函数体需要调用才能被解释),即优先执行。所以便在script被解释的时候那么它并没有找到id为"con"的对象,因此便会出现以上的问题。
2019-01-29 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

为啥函数外声明了变量,在函数里面不能用,了解一下吧

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