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

Javascript的值为什么会变成Hello world出现在上面?

想问下是什么原因呢?

1/是因为程序在执行HTML文件时会提前预加载或者预编译script文件所以javascript的值被改变了;

2/是因为程序是按从上到下顺序执行,然后执行到document.write("P标签原始内容:"+mycon.innerHTML);后将javascript的值改为Hello world.

想请教下这两种哪种对的呢?还是有其他的解释?谢谢

正在回答

5 回答

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>innerHTML</title>
<script type="text/javascript">

// 浏览器解析你的代码是从上到下,此时,浏览器开始解析var mychar=document.getElementById("con");
  var mychar=document.getElementById("con");
  //很神奇的发现  mychar 这个变量是undined,为什么呢,因为此时<body></body>里面的代码浏览器还没有开始看
  // 所以你通过id来找document.getElementById("con")是找不到的;,所以下面的mychar的变量都是无意义的
  //结果就是js代码失效
  document.write("原标题:"+mychar.innerHTML+"<br>"); //输出原h2标签内容
  mychar.innerHTML="Hello world!";
  document.write("修改后的标题:"+mychar.innerHTML); //输出修改后h2标签内容
  
  //所以要么把script里面的内容放在下面,一定要放在你要获取id节点下面,比如你没有用到p标签,其实放在p标签上面,和下面也行
  //2,通过window.onload=function(){ 你的js代码  },的方法,他的作用是当页面加载完之后开始调用
  
  
</script>
</head>
<body>
<h2 id="con">javascript</h2>
<p> JavaScript是一种基于对象、事件驱动的简单脚本语言,嵌入在HTML文档中,由浏览器负责解释和执行,在网页上产生动态的显示效果并实现与用户交互功能。</p>
</body>
</html>


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

suBJuly 提问者

OK 懂了。万分感谢!以后不懂的还望指教一二。
2017-04-19 回复 有任何疑惑可以回复我~
#2

我不是管家 回复 suBJuly 提问者

没事,我也在巩固一下自己的基础,准备吧原生js从头看一遍
2017-04-19 回复 有任何疑惑可以回复我~
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>innerHTML</title>
<script type="text/javascript">
  var mychar=document.getElementById("con");
  document.write("原标题:"+mychar.innerHTML+"<br>"); //输出原h2标签内容
  mychar.innerHTML="Hello world!";
  document.write("修改后的标题:"+mychar.innerHTML); //输出修改后h2标签内容
</script>
</head>
<body>
<h2 id="con">javascript</h2>
<p> JavaScript是一种基于对象、事件驱动的简单脚本语言,嵌入在HTML文档中,由浏览器负责解释和执行,在网页上产生动态的显示效果并实现与用户交互功能。</p>
</body>
</html>


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

可能是这样的,script的确在哪都能运行,但是要看下你的代码是否与body里面的内容有关联,如果仅仅是document.write("P标签原始内容:"),这样是可行的,但是如果要获取body里面的节点的话获取不到,

最好贴下代码













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

suBJuly 提问者

好的,这种情况下在head中的script代码为什么不会执行?比如说里面的document为什么不能正确的显示出来呢?求解
2017-04-19 回复 有任何疑惑可以回复我~
#2

suBJuly 提问者

代码回复中不能超过300字,我给放在下面的回答里面了,你看看。
2017-04-19 回复 有任何疑惑可以回复我~

实际操作可以发现,当你把script的内容放在body上面的时候,页面报错,因为你无法获取id,这是因为浏览器解析这个页面是从上到下,当他执行JavaScript的代码是,dom并没有开始加载;

当script放在body下面时,由于从上至下,dom已经解析完成,这时候可以获取属性节点id,就可以使用innerHtml的方法更改元素节点的内容

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

suBJuly 提问者

你确定?你可以试试把script里面的内容放在body上面head中时的情况。一样会显示出来。
2017-04-18 回复 有任何疑惑可以回复我~

第二种

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

举报

0/150
提交
取消

Javascript的值为什么会变成Hello world出现在上面?

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