私はjavascriptの初心者で、DOMを使って作業を始めます。いくつかの異なる場所で異なるID名のスパンを集め、オブジェクトリテラルからデータを取得した後、それは冗長になるように見えました。これを書くより良い方法はありませんか?私はまた、機能を学んでいるが、本当にそれをどのように関連付けるのかは分かりません。簡単に見るためのJSfiddleがあります。 https://jsfiddle.net/q5366wzb/ObjectリテラルでgetElementByIDを複数回使用する効率的な方法はありますか?
HTML:
<fieldset id="candidates">
<legend>Candidates</legend>
<div>
<label for="cand1">Candidate 1</label>
<span class="candidate" id="cand1"></span>
<span class="party" id="party1"></span>
</div>
<div>
<label for="cand2">Candidate 2</label>
<span class="candidate" id="cand2"></span>
<span class="party" id="party2"></span>
</div>
<div>
<label for="cand3">Candidate 3</label>
<span class="candidate" id="cand3"></span>
<span class="party" id="party3"></span>
</div>
</fieldset>
<fieldset id="statistics">
<div>
<h2>Results for Candidate 1</h2>
<div id="candidateName1"></div>
<label for="cand1pct">Percentage</label>
<output id="cand1pct"></output>
</div>
<div>
<h2>Results for Candidate 2</h2>
<div id="candidateName2"></div>
<label for="cand2pct">Percentage</label>
<output id="cand2pct"></output>
</div>
<div>
<h2>Results for Candidate 3</h2>
<div id="candidateName3"></div>
<label for="cand3pct">Percentage</label>
<output id="cand3pct"></output>
</div>
</fieldset>
JS
var votingData = {
candidates: [{
name: "Harry S. Truman",
party: "Democratic"
},
{
name: "Thomas E. Dewey",
party: "Republican"
},
{
name: "Strom Thurmond",
party: "Dixiecrat"
}]
};
document.getElementById("cand1").innerHTML =
votingData.candidates[0].name;
document.getElementById("candidateName1").innerHTML =
votingData.candidates[0].name;
document.getElementById("party1").innerHTML =
votingData.candidates[0].party;
document.getElementById("cand2").innerHTML =
votingData.candidates[1].name;
document.getElementById("candidateName2").innerHTML =
votingData.candidates[1].name;
document.getElementById("party2").innerHTML =
votingData.candidates[1].party;
document.getElementById("cand3").innerHTML =
votingData.candidates[2].name;
document.getElementById("candidateName3").innerHTML =
votingData.candidates[2].name;
document.getElementById("party3").innerHTML =
votingData.candidates[2].party;
ちょうど私が完全にこれを理解していることを確認するために、あなたはその後、ドットでオブジェクトにアクセスする新しい変数を作成候補地物への表記。その後、候補の長さからforループを使用して、3となるでしょうか?または1?次に、各候補配列を取る新しい変数を作成しましたか?それはそれぞれの候補をそれぞれの適切な配置に持っていきますか? – logan26
@BeckyT 'votingData.candidates'は3つの項目を持つ配列に関連するので、長さは3になります。あなたが作った他のステートメントはすべて正しいです。 –
素晴らしい!どうもありがとうございます。アクセス方法 – logan26