就是书上的例子,第6章,书是Head First Javascript Programming必须要加上!DOCTYPE才有效果,不过用.className的话不加上也行

解决方案 »

  1.   

    声明!DOCTYPE和js没有关系吧。声明!DOCTYPE是让页面如何去显示。我的想法是,你设置的那个属性可能在非html5下不存在,所以你不加!DOCTYPE html就能正常设置。但是如果在html5下这个属性是默认存在的,也就是说不是自定义的属性。那么你就不能给其设置一个值,因为这个属性的值是固定的
      

  2.   


    <!doctype html> 
    <html lang="en"> 
    <head>
    <meta charset="utf-8"> 
    <title>Planets</title> 
    <style>
    .redtext { color: red; } 
    </style>
    </head>
    <body>
    <h1>Green Planet</h1>
    <p id="greenplanet">All is well</p> 
    <h1>Red Planet</h1>
    <p id="redplanet">Nothing to report</p> 
    <h1>Blue Planet</h1>
    <p id="blueplanet">All systems A-OK</p>
    <script>
    function init() {
    var planet = document.getElementById("greenplanet");
    planet.innerHTML = "Red Alert: hit by phaser fire!"; 
    planet.setAttribute("class", "redtext");
    }
    window.onload = init;
    </script>
    </body>
    </html>
    书上的代码,如果删除<!doctype html> ,就没效果,不过把planet.setAttribute("class", "redtext");换乘planet.classNam = "redtext";依然可以
      

  3.   

    表示没有看到这个效果在IE的各个版本,都没有发现这个问题。虽然IE7之前的color的值,没有加上去,但是class的属性值,是已经在标签中了。不知道您这是在哪个浏览器测试得到的结论呢?
      

  4.   


    ie8吧,windows 7自带的上面写漏了,是.className,用这种方法的话删除<!doctype html>依然有效果
      

  5.   

    额IE的,我都测过了,看不出来的这么蛋疼。。你在浏览器的调试工具中看看,是不是已经给目标元素添加上class这个属性值了吗?或者有没有报错。。