検索

ホームページ  >  に質問  >  本文

javascript - 关于改变行间样式函数的写法

完整js代码

<script>
        //改变行间样式函数
        function changeStyle(elem,name,value) {
            elem.style[name] = value;//为什么不能写成elem.style.name = value
        }
        //执行改变属性函数
        window.onload = function () {
            var oSubmitBtn = document.getElementById("submit");
            var oResetBtn = document.getElementById("reset");
            var oInput = document.getElementsByTagName("input");
            var op = document.getElementById("p1");

            oSubmitBtn.onclick = function() {
                changeStyle(op,oInput[0].value,oInput[1].value);
            }
            oResetBtn.onclick = function() {
                op.removeAttribute("style");   
            }
        }
    </script>

问题是第一个函数内部如果改成elem.style.name = value就不行了,求解

阿神阿神2896日前337

全員に返信(3)返信します

  • 天蓬老师

    天蓬老师2017-04-10 15:21:13

    你先看看下面代码,体会体会。

    var obj = {
        name:"hello"
    }
    var a = "name";
    console.log(obj.name);//hello
    console.log(obj.a);//undefined
    console.log(obj[a]);//hello
    console.log(obj['a']);//undefined
    console.log(obj['name']);//hello
    console.log(obj[name]);//undefined
    

    点操作符只能操作那个对象有的属性名,中括号中如果你传递的是变量他是要解析的,如果是字符串,点操作符能行,他也行,点操作符不行的,它也行,
    例如


    var obj = { "aa bb":1 }; console.log(obj["aa bb"])

    属性名有空格,这种情况只能用[]

    返事
    0
  • 高洛峰

    高洛峰2017-04-10 15:21:13

    访问属性

    一个例子:有两种方式来访问对象的属性,点操作符或者中括号操作符。

    var foo = {name: 'kitten'}
    foo.name; // kitten
    foo['name']; // kitten
    
    var get = 'name';
    foo[get]; // kitten
    
    foo.1234; // SyntaxError
    foo['1234']; // works
    

    两种语法是等价的,但是中括号操作符在下面两种情况下依然有效

    动态设置属性
    属性名不是一个有效的变量名(比如属性名中包含空格,或者属性名是 JS 的关键词)。

    返事
    0
  • 巴扎黑

    巴扎黑2017-04-10 15:21:13

    很简单的一个例子
    var name="__name";
    var obj={};

    obj[name]="1";
    obj.name="2";
    console.log(obj);

    {
    __name:"1",
    name:"2"
    }

    返事
    0
  • キャンセル返事