首先,这个问题有很多重复,但这些答案并没有提供更深入的见解。
一季度。为什么这会导致 200,0 ?
考虑这个片段:
var el = document.querySelector('#r');
console.log('First:: ' + el.offsetHeight);
el.style = {
height: el.offsetHeight + 500 + 'px'
}
console.log('Second:: ' + el.offsetHeight);Run Code Online (Sandbox Code Playgroud)
<div id="r" style="height:200px;width:800px;overflow:auto;border:1px solid;margin:20px;box-sizing:border-box"></div>Run Code Online (Sandbox Code Playgroud)
我怀疑el.style是只读的,所以我希望设置一个对象应该默默地失败,因此我希望输出是
First:: 200,Second:: 200
但它是:
First:: 200,Second:: 0
为什么 ?
Q2。为什么使用 Object.assign 设置 el.style 有效?
Object.assign(el.style,{
height : el.offsetHeight + 500
})
Run Code Online (Sandbox Code Playgroud)
有人可以用更深入的见解解释我吗?