昨天我問了question about improving efficiency in my code每個元素的顯示。今天我還有另外一個問題,就是試圖編寫更少的代碼來完成重複任務。JavaScript的使用循環改變,有一個特定的類
我有以下代碼:
function myIntroductionText() {
introPos.style.display = 'block';
posOne.style.display = 'none';
posTwo.style.display = 'none';
posThree.style.display = 'none';
posFour.style.display = 'none';
posFive.style.display = 'none';
posSix.style.display = 'none';
posSeven.style.display = 'none';
posEight.style.display = 'none';
posNine.style.display = 'none';
posTen.style.display = 'none';
posEleven.style.display = 'none';
backButton.style.visibility = 'hidden';
}
function myPositionOne() {
introPos.style.display = 'none';
posOne.style.display = 'block';
posTwo.style.display = 'none';
posThree.style.display = 'none';
posFour.style.display = 'none';
posFive.style.display = 'none';
posSix.style.display = 'none';
posSeven.style.display = 'none';
posEight.style.display = 'none';
posNine.style.display = 'none';
posTen.style.display = 'none';
posEleven.style.display = 'none';
backButton.style.visibility = 'visible';
}
function myPositionTwo() {
introPos.style.display = 'none';
posOne.style.display = 'none';
posTwo.style.display = 'block';
posThree.style.display = 'none';
posFour.style.display = 'none';
posFive.style.display = 'none';
posSix.style.display = 'none';
posSeven.style.display = 'none';
posEight.style.display = 'none';
posNine.style.display = 'none';
posTen.style.display = 'none';
posEleven.style.display = 'none';
}
的HTML看起來是這樣的:
<p class="textContent" id="introductionText">Introduction Text Goes Here</p>
<p class="textContent" id="position1">content1</p>
<p class="textContent" id="position2">content2</p>
<p class="textContent" id="position3">content3</p>
每個位置(即introPos,posOne,posTwo)也有相應的功能,看起來基本上是與上述相同的功能,但它更改基於它是在哪個位置顯示。
我想,我可以用一個循環和/或if/else語句使這項任務更有效率。我試圖通過使用getElementsByClassName方法(「的textContent」),其中(我認爲)生成包含所有與該類別的元件的陣列。按照的console.log被包含[P#introductionText.textContent,P#position1.textContent,等等等等...。所以,我寫了下面的代碼,通過它來嘗試循環:
var blanks = document.getElementsByClassName("textContent") // this creates the array that I mentioned
for (item in blanks) {
if (blanks[0] === introductionText.textContent) {
blanks[0].style.display = 'block';
} else {
blanks[item].style.display = 'block';
}
}
我試圖用對#introductionText.textContent而是返回了一個錯誤。我對JavaScript很陌生,所以我完全認識到我可以在這裏做一些非常愚蠢的事情,但任何幫助,將不勝感激。
編輯: 錯誤消息稱未捕獲的SyntaxError:意外tocken非法
我還要補充一點,我的目標是隻有一個位置是每次可見。我有一個「後退」和「下一步」按鈕,允許用戶從posOne去posTwo,以posThree,等等。因此,除了使posTwo可見外,我還需要使posOne和/或posThree不可見。
謝謝!
什麼是錯誤訊息? – Teemu
什麼是錯誤? – Evers
沒有必要每次將所有元素都重置爲none。你只需要做一次。 – MinusFour