这有效:
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]
?
答案 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
属性,更改页面呈现。