代码:
activeCell.onclick = function()
{
console.log(element);
element.value = this.value;
console.log(element.value);
console.log(element);
};
假设 activeCell 是一个 value =“678”的范围,但元素只是一个简单的输入标记()
<input id="calendar" value="123" />
输出:
<input id="calendar" value="123">
678
<input id="calendar" value="123">
字符串 123 替换为 678 ,但输入标记值保持不变。但是,当使用方法setAttribute时,输出值会更改:
element.setAttribute("value", this.value);
我以前使用 element.value = XXX 并且它有效......有什么区别?
答案 0 :(得分:0)
根据您的示例,“value”属性是元素类型“input”的预定义属性,但不是元素类型“span”的预定义属性。所以根据你的功能
<input id="calendar" value="123">
<span id="activeCell">678</span>
document.getElementById('activeCell').onclick = function(){
element = document.getElementById('calendar');
console.log(element);
element.value = this.value; // Here this object doesn't have the property value hence it will be assigned with value as undefined;
console.log(element.value);
console.log(element);
};
"this" object referring to the Span element does not have the property `"value"` by default hence it returns undefined. It is not the case with the setAttribute method.
在setAttribute方法中,您可以为任何属性分配任何值。基本功能是检查该对象的属性堆栈,如果找到您提到的属性,则为其分配值。如果在属性堆栈中找不到该属性,则它会使用您指定的名称为该对象创建新属性,并为其指定值。
so document.getElementById('activeCell')。setAttribute('value',“102”);它使用102分配属性值。
希望这有助于您理解