问答详情
源自:3-2 通过ID获取元素

document.write的输出被“隐藏”的问题。

<!DOCTYPE HTML>

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title>document.getElementById</title>

</head>

<body>

<p id="con"><span>这是p内部的一个子标签</span>JavaScript</p>

<script type="text/javascript">

  var mychar=document.getElementById("con")//获取元素存储在变量mychar中。

  var myword=mychar.innerHTML;//获取元素的内容存储在myword中,span会被当作字符串显示,但p不会。

  var myletter=mychar.innerText;//p、span都被当作标签不显示。

  document.write("结果:"+mychar+"<br/>"); //输出获取的P标签。

   mychar.style.color="red";

   mychar.style.backgroundColor="#CCC";

  document.write("结果:"+myword+"<br/>");//输出获取的P标签内容,因使用的是document.write所以p、span都被当作标签不显示。

   myword.style.color="blue";

   myword.style.backgroundColor="#CCC";

  document.write("结果:"+"&nbsp&nbsp"+myletter+"<br/>");//为了区分加了空格 

</script>

</body>

</html>

//当不存在第二段

   myword.style.color="blue";

   myword.style.backgroundColor="#CCC";

时,第三个document.write会显示,然而存在时,第三个document.write便没有输出内容。why?

提问者:桃太郎 2016-09-11 11:58

个回答

  • 鱼葱葱葱
    2016-09-11 12:53:55

    至于为什么加了myword.style.color="blue";   myword.style.backgroundColor="#CCC";之后没有显示后面的内容,是因为HTML文档的加载顺序是依次,加载完p标签以后开始读取js,读到myword.style.color="blue"; 这儿就报错了,所有后面的就不执行了。  具体可以F12看一下console报错,我用的是谷歌浏览器。  报错信息是     Uncaught TypeError: Cannot set property 'color' of undefined。

       (anonymous function)    @    9.html:25         并且会具体指出是哪个html文件的哪一行的错误,我在重新用sublime编辑器编辑的时候,就是在25行写的myword.style.color="blue";     。

    以上,拙见。也是自己的一个积累,一起努力。


  • qq_cannonfodder_0
    2016-09-11 12:48:34

    style只能对元素对象操作

  • 鱼葱葱葱
    2016-09-11 12:47:42

    mychar是你的p元素,而myword是你p元素的内容,内容是没有style属性的。myword.style.color="blue"; 你这儿应该是想给p元素更改style吧,。改成mychar。