2011-07-26 9 views
0

スニペット1をスニペット2に変換しようとしましたが、これは機能しませんでした(テキストフィールドはクリアされませんでした)。 f3aaとf3bbはそれぞれのテキストフィールドです。このJavascriptを最適化するにはどうすればよいですか?

スニペット1

var target=document.getElementById('f3aa'); 
target.value=''; 
var target=document.getElementById('f3bb'); 
target.value=''; 

スニペット2

o1('f3aa')=o1('f3bb')=''; 

スニペット3

function o1(a) 
    { 
    document.getElementById(a); 
    } 

答えて

1
X('f3aa').value = X('f3bb').value = ''; 

ライブデモ

http://jsfiddle.net/zmr29/

は(私は私のデモでX機能を書いたが、私はあなたのライブラリーを使用するか、またはDOMクエリのためのいくつかの他の速記を持っているのどちらかということを前提としています。)

+0

思っまさにあなたが確認することができます/私の答えを編集します。私は最小化と連続割当てを追加しました。ありがとう! –

+0

@Chris Snippet 2は次のようにする必要があります: 'o1( 'f3aa')。value = o1( 'f3bb')。値= ''; –

4

私が正しくあなたの質問を理解してきたと仮定すると、あなたはほぼありました:

document.getElementById('f3aa').value = ''; 
document.getElementById('f3bb').value = ''; 

スニペット2で、その要素のvalueプロパティではなく、DOM要素に空の文字列を割り当てようとしています。

スニペット1では、target変数にDOM要素を割り当て、target変数のvalueプロパティに空の文字列を割り当てます。 targetにはDOM要素が含まれているため、その要素のvalueプロパティにその文字列を割り当てます。これは上記のコードと同じです。あなたはあなたの第二であなたの最初のスニペットから属性名含めるのを忘れて

3

document.getElementById('f3aa').value=''; 
document.getElementById('f3bb').value=''; 

を(これは本当に「最適化」ではないことに注意してください - どのように迅速に二つに目立った違いは存在しませんスニペットが実行されます。使用し、より読みやすい方。)Xは、クエリごとにIDの実装である

+0

+1 ...私は:) –

0

私はそれがだと思いますvarを使用して同じスコープ内で複数回変数を宣言することはできません。

このコードは悪いです:

var test = true; 
var test = false; 

このコードは良いです:最適化発言用

var test = true; 
    test = false; // <-- no "var" keyword here 
+0

最初の例は、最初の' test'値を2番目の値で上書きします。 2番目の例では、グローバルな 'test'変数を作成します。この変数はローカルの' test'によってシャドーされています(関数内にあると仮定して)。 – user113716

+0

私は、インデントを使って2番目の行が変数ステートメントの一部であると考えさせる方法を愛しています ':)' –

関連する問題