完整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
就不行了,求解
你先看看下面代码,体会体会。
点操作符只能操作那个对象有的属性名,中括号中如果你传递的是变量他是要解析的,如果是字符串,点操作符能行,他也行,点操作符不行的,它也行,
例如
属性名有空格,这种情况只能用[]
访问属性
一个例子:有两种方式来访问对象的属性,点操作符或者中括号操作符。
两种语法是等价的,但是中括号操作符在下面两种情况下依然有效
动态设置属性
属性名不是一个有效的变量名(比如属性名中包含空格,或者属性名是 JS 的关键词)。
很简单的一个例子
var name="__name";
var obj={};
obj[name]="1";
obj.name="2";
console.log(obj);
{
__name:"1",
name:"2"
}