在JavaScript中使用setAttribute方法

时间:2013-10-31 10:06:27

标签: javascript html input

代码:

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 并且它有效......有什么区别?

1 个答案:

答案 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分配属性值。

希望这有助于您理解