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

"Invalid left-hand side in assignment" on style property assignment

本文关键字:赋值 无效 属性 样式      更新时间:2023-09-26

错误在计算此行时显示:

color && el.style.color = color;

这是怎么回事?DOM 级别 2 属性现在是"只读"的吗?

问题是优先级,你需要参数:

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

&&的优先级高于=,因此如果没有参数,您最终会尝试分配给表达式(例如,它有效地读取(color && el.style.color) = color;),这当然是您无法做到的。

我同意 Mark Linus 的观点,尽管您也可以将代码重写为

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

如果您使用的是"?." 可选的链条操作员,您必须将其删除。

例:

//wrong
el?.style?.color = color;

//ok
el.style.color = color;