1

这有效:

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]

4

5 回答 5

2

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

button_text = Su.Ani.flipPane.p1;

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

于 2012-10-16T17:28:06.440 回答
2

button_text = ...用值替换变量。

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

于 2012-10-16T17:28:30.933 回答
2

您不能引用属性。

当你这样做时:

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

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

当你这样做时:

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

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

“. 具有最高优先级。这是否意味着 .innerHTML 被应用于 [0]?”

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

于 2012-10-16T17:44:11.360 回答
1

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

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

于 2012-10-16T17:26:40.943 回答
-1

JavaScript 没有指针之类的东西。如果你给一个变量赋值,你会覆盖之前的值。您要分配给DOM对象的innerHTML 属性,从而更改页面呈现。

于 2012-10-16T17:29:07.183 回答