此代碼是FAQ的未觸動版本,包含三個可單擊顯示或隱藏的答案。我的任務是修改一次只顯示一個答案(其他兩個必須關閉)。 我得到了一個提示,使用for循環來檢查數組中的h2元素,並刪除所有不是被單擊的h2元素的class屬性。 謝謝每次只能顯示/隱藏div
"use strict";
var $ = function(id) { return document.getElementById(id); };
// the event handler for the click event of each h2 element
var toggle = function() {
var h2 = this; // clicked h2 tag
var div = h2.nextElementSibling; // h2 tag's sibling div tag
// toggle plus and minus image in h2 elements by adding or removing a class
if (h2.hasAttribute("class")) {
h2.removeAttribute("class");
} else {
h2.setAttribute("class", "minus");
}
// toggle div visibility by adding or removing a class
if (div.hasAttribute("class")) {
div.removeAttribute("class");
} else {
div.setAttribute("class", "open");
}
};
window.onload = function() {
// get the h2 tags
var faqs = $("faqs");
var h2Elements = faqs.getElementsByTagName("h2");
// attach event handler for each h2 tag
for (var i = 0; i < h2Elements.length; i++) {
h2Elements[i].onclick = toggle;
}
// set focus on first h2 tag's <a> tag
h2Elements[0].firstChild.focus();
};
設計第一,代碼第二!在設計中,您需要考慮點擊h2元素中的鏈接是否導航到另一個頁面,如果用戶單擊已打開的答案時該做什麼,您是否需要處理兩個以上的h2元素,以及if那麼,爲什麼不是'onload'函數內的click處理程序,它可以訪問h2元素的集合。祝你的作業:) – traktor53
謝謝:)我會確保在編碼之前編寫僞代碼)) – Pappricot