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 = ...オブジェクトのプロパティを置き換えます。これは、そのプロパティに対してsetter関数がどのように機能するかにより、表示されるHTMLに影響を与えます。

于 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 に答える