样式属性赋值中的“赋值中的左侧无效”

时间:2012-05-27 16:15:29

标签: javascript operator-precedence

评估此行时出现

错误:

color && el.style.color = color;

发生了什么事? DOM级别2属性现在是“只读”吗?

2 个答案:

答案 0 :(得分:6)

问题是precedence,你需要parens:

function log(msg, color) {
    var el = document.createElement('p');
    el.innerText = msg;
    document.getElementById('log').appendChild(el);
    color && (el.style.color = color);
}

&&的优先级高于=,所以没有parens,你最终会尝试分配一个表达式(例如,它有效地读取(color && el.style.color) = color;),当然你不能做。

答案 1 :(得分:0)

我同意Mark Linus,但您也可以将代码重写为

color && (el.style.color = color)