2017-10-04 5 views
0

これは非常に基本的な質問のように思えます。私はちょうど適切に検索するように見えないので、誰かが別の方法で要求しない限り、簡潔にしておくつもりです。私はそれがフォームの都市と州の情報を記入するだけでなく、コストを測るために、顧客の料金を示していますユーザ入力に基づいてドキュメントにオブジェクトプロパティ値を書き込むJavaScriptコードを凝縮するのに役立つ必要があります。

zipCode.onchange = function() { 
var zipPrice = document.getElementById('tripCost'); 
var zipCity = document.getElementById('cityState') 

if ('z'+zipCode.value === 'z39429') { 
    zipPrice.textContent = price$$$$[7].z39429; 
    zipCity.textContent = price$$$$[8].z39429; 
} else if ('z'+zipCode.value === 'z39483'){ 
    zipPrice.textContent = price$$$$[7].z39483; 
    zipCity.textContent = price$$$$[8].z39483; 
} 

れ、作品javascript関数を次のようしています。配列内の2つの関連オブジェクトには十数個の郵便番号が含まれていますが、必要な各入力を手動で入力するのではなく、ユーザー入力をプロパティと直接比較する簡単な方法が必要です。

他にも、プロパティ名が数字で始まるかどうかわからないので、私は 'z'に郵便番号を入れました。そうでない場合はプロパティ名を変更し、関数から 'z +'を削除します。 VARキー= 'Z' + zipCode.value `;

+0

詳細はdupetargetを見るが、 zipPrice.textContent = price $$$$ [7] [key]; zipCity.textContent = price $$$$ [8] [key]; 'いずれかのオブジェクトに対して' undefined'が得られるかどうかをチェックすると、オブジェクトにないzipを意味します。 –

+0

* "プロパティ名が数字で始まるかどうかわかりませんでした" *プロパティ名が数字で始まるのは完全に正しいです: 'var obj = {123:" one two three "};' (ただし、郵便番号の場合は読んでください)。プロパティ名は常に文字列(またはシンボル)であることに注意してください。本当に 'var obj = {" 123 ":" one two three "};'も有効です(郵便番号には必須です。 。 –

答えて

0

すなわちコード( 'Z' の除去)にrefactorizedすることができる。

zipCode.onchange = function() { 
    var zipPrice = document.getElementById('tripCost'); 
    var zipCity = document.getElementById('cityState'); 

    zipPrice.textContent = price$$$$[7][zipCode.value]; 
    zipCity.textContent = price$$$$[8][zipCode.value]; 
} 
+1

なぜですか?数字をキーにしたオブジェクトを作成することができます。私は他のことを誤解しましたか? –

+1

私はあなたがそれをすることができます(おそらく質問のその部分を引用する)ことができるという答えをはっきりと呼び出すでしょう。しかしそれは重複しているので、... –

関連する問題