关于设置className的疑问

来源:4-1 编程挑战

JSAL

2015-02-21 14:06

问题更新:前面写急写错了,将82行的等号写成了冒号,不过改成冒号后还是存在设置className无效的问题。

如果要测试运行的话,因为附带代码部分似乎不支持原作者修改保存,所以请记得将82行改成target.className="reset";再做自己的修改,谢谢!

问题描述:

关于这个代码 我在第82行代码用className实现重置发现无效,不知道是什么原因,想请教一下老师和同学,谢谢!

具体说明:

我把reset样式写成
.reset{
display:"block";
width:"600px";
height:"400px";
color:"black";
background-color:"white";
}
假设我前面修改的是id为target的部分,在cancel函数里写:
target.className="reset";
alert("重置成功");
结果是:alert能执行,但target部分的样式没有改变,也就不是reset的样式了。

写回答 关注

2回答

  • 11111
    2015-02-22 13:30:43
    已采纳
    <!DOCTYPE HTML>
    <html>
    <head>
    <meta http-equiv="Content-Type" Content="text/html; charset=utf-8" />
    <title>javascript</title>
    <style type="text/css">
      body { font-size:12px; }
    
      #txt {
        height: 400px;
        width: 600px;
        border: #333 solid 1px;
        padding: 5px;
      }
    
      p {
        line-height: 18px;
        text-indent: 2em;
      }
    
      /*默认类样式*/
      /* !!样式声明不必使用双引号 */
      .reset {
        display: block;
        width: 600px;
        height: 400px;
        color: black;
        background-color: white;
      }
    </style>
    </head>
    <body>
      <h2 id="con">JavaScript课程</h2>
      <div id="txt"> 
         <h5>JavaScript为网页添加动态效果并实现与用户交互的功能。</h5>
            <p>1. JavaScript入门篇,让不懂JS的你,快速了解JS。</p>
            <p>2. JavaScript进阶篇,让你掌握JS的基础语法、函数、数组、事件、内置对象、BOM浏览器、DOM操作。</p>
            <p>3. 学完以上两门基础课后,在深入学习JavaScript的变量作用域、事件、对象、运动、cookie、正则表达式、ajax等课程。</p>
      </div>
      <form>
      <!--当点击相应按钮,执行相应操作,为按钮添加相应事件-->
        <input type="button" value="改变颜色" onclick="changeColor()">  
        <input type="button" value="改变宽高" onclick="changeSize()">
        <input type="button" value="隐藏内容" onclick="hide()">
        <input type="button" value="显示内容" onclick="show()">
        <input type="button" value="取消设置" onclick="cancel()">
      </form>
      <script type="text/javascript">
        //改变的目标
        var target = document.getElementById("txt");
        //测试
    
        //定义"改变颜色"的函数
        function changeColor() {
            var fc = prompt("请输入字体颜色:");
            target.style.color = fc;
        }
    
        //定义"改变宽高"的函数
        function changeSize() {
            var wid = prompt("请输入宽度:");
            target.style.width = wid + "px";
            var hei = prompt("请输入高度:");
            target.style.height = hei + "px";
        }
    
        //定义"隐藏内容"的函数
        function hide() {
            target.style.display = 'none';
        }
    
        //定义"显示内容"的函数
        function show() {
            target.style.display = 'block';
        }
    
        //定义"取消设置"的函数
        function cancel(){
            var reset = confirm("是否需要重置?");
            if(reset==true) {
                target.className = "reset";
                // !!内联的样式比外联样式优先级高,所以重置要先remove掉style这个attribute,以免内联样式覆盖掉.reset的样式
                target.removeAttribute('style');
                alert("重置成功");
            }
        }
      </script>
    </body>
    </html>


    JSAL

    能理解一些了!非常感谢!!

    2015-02-23 10:49:24

    共 1 条回复 >

  • 11111
    2015-02-21 16:49:46

    用等于号。

    target.className="reset";


    JSAL

    你好 谢谢回答 ! 不过用等号也是无效的(刚刚试了一下),在前面的一个反应相似问题的讨论中看到的回答(如下): “这个,如果你前面是改变的className的话,那么最后这个重置是可以这样写的,但是如果你前面是直接调用元素的style属性来修改的话,那么再用这个就不行了 by血舞残殇” 只是不太清楚这个回答的知识点,如果有知道的人希望能帮忙讲解一下或者给一下相关的知识点我可以去查一查。谢谢!

    2015-02-21 19:48:20

    共 1 条回复 >

JavaScript入门篇

JavaScript做为一名Web工程师的必备技术,本教程让您快速入门

739818 学习 · 9566 问题

查看课程

相似问题