保存对.innerHTML的引用

时间:2012-10-16 17:25:18

标签: javascript

这有效:

var button = $A("#aba_but_del")[0];
button.innerHTML = Su.Ani.flipPane.p1;

但这不起作用

var button_text = $A("#aba_but_del")[0].innerHTML;
button_text = Su.Ani.flipPane.p1;

为什么?

根据https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/Operator_Precedence.具有最高优先级。这是否意味着.innerHTML被应用于[0]

5 个答案:

答案 0 :(得分:2)

javascript中的所有原语都是不可变的。这意味着以下代码只更改了字符串的不同实例:

button_text = Su.Ani.flipPane.p1;

在第一种情况下,按钮是引用DOM元素的对象。因此,在更改innerHTML属性值时,您将更改DOM元素本身。

答案 1 :(得分:2)

button_text = ...将值替换为变量。

button.innerHTML = ...替换了对象的属性,这反过来影响了显示的HTML,因为setter函数对该属性的工作方式。

答案 2 :(得分:2)

您无法引用某个属性。

当你这样做时:

var button = $A("#aba_but_del")[0];

您将获得对该元素的引用,因此稍后您可以使用该引用来访问该元素的成员。

当你这样做时:

var button = $A("#aba_but_del")[0].innerHTML;

您获得了该属性的值,而不是该属性的引用。该值是您分配给button变量的字符串,并且为变量分配不同的字符串不会更改第一个字符串,也不会更改复制该字符串的对象。

  

“。具有最高优先级。这是否意味着.innerHTML正在存在   适用于[0]?“

没有。 []运算符与.运算符具有相同的优先级,因为它们实际上是相同的运算符,因此它们从左到右进行求值。使用obj['name']obj.name相同,但.运算符不能与不遵循标识符规则的属性名一起使用,如数字索引。< / p>

答案 3 :(得分:1)

1) button_text是一个字符串,不再绑定到按钮DOM对象。 因此,更改它不会影响按钮元素。

2) 这是否意味着.innerHTML正在应用于[0]?是的。 “”并且“[]”具有从左到右相同的优先级。

答案 4 :(得分:-1)

JavaScript没有指针或类似的东西。如果为变量指定了某些内容,则会覆盖以前的值。您想要分配DOM 对象innerHTML 属性,更改页面呈现。