3 回答

TA貢獻(xiàn)1824條經(jīng)驗(yàn) 獲得超8個贊
你的筆上有一些拼寫錯誤。JavaScript 區(qū)分大小寫,因此 vanillaDiv 和 VanillaDiv 不是同一件事。您的所有 DIV 均以小寫字母開頭,而復(fù)選框均以大寫字母開頭,因此您永遠(yuǎn)無法正確匹配該元素。
編輯:(僅供記錄)要正確驗(yàn)證是否選中復(fù)選框,您需要使用該.checked屬性。(忘記寫這部分文本,盡管我發(fā)布的代碼從一開始就進(jìn)行了此更正)。
所以改變:
<div id="vanillaDiv" class="hideDiv">
<textarea id="vanComments"></textarea>
</div>
到 :
<div id="VanillaDiv" class="hideDiv">
<textarea id="vanComments"></textarea>
</div>
此外,使用.checked復(fù)選框?qū)傩院腿唵蔚姆椒ㄊ牵?/p>
function toggle(flavor){
var checkBox = document.getElementById(flavor).checked;
document.getElementById(flavor+"Div").style.display = checkBox === true ? "block" : "none";
}

TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超6個贊
就像評論中提到的那樣,您有一個案例問題需要修復(fù)“Vanilla”->“vanilla”等。
另外,也許這對三元運(yùn)算符會有幫助(我花了一段時間才理解它):通常,您希望使用三元來返回某些內(nèi)容,而不僅僅是在執(zhí)行兩個不同條件之間切換。
IE。let newVar = checkSomething === checkAgainst ? this : that
由于您已經(jīng)使用一個.hideDiv類來設(shè)置顯示樣式,因此您可以使用該element.classList.toggle(className)方法在兩種狀態(tài)之間切換,并讓 vanilla js 在后臺處理布爾值。
我將其留console.log(thing)在片段中只是因?yàn)樗梢詭椭伊私饷總€點(diǎn)的內(nèi)容。
function toggle(flavor){
var checkBox = document.getElementById(flavor)
console.log(checkBox)
let divElement = document.getElementById(flavor+"Div")
console.log(divElement)
divElement.classList.toggle('hideDiv')
}
.hideDiv{
display:none
}
<input type="checkbox" id="vanilla" onClick="toggle('vanilla')"/> Vanilla
<input type="checkbox" id="cherry" onClick="toggle('cherry')"/> Cherry
<input type="checkbox" id="apple" onClick="toggle('apple')" /> Apple
<div id="vanillaDiv" class="hideDiv">
<textarea id="vanComments"></textarea>
</div>
<div id="cherryDiv" class="hideDiv">
<textarea id="cherComments"></textarea>
</div>
<div id="appleDiv" class="hideDiv">
<textarea id="appComments"></textarea>
</div>

TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超6個贊
有兩個問題:
html 事件應(yīng)該具有相同的目標(biāo)大小寫級別,您當(dāng)前正在嘗試獲取 DOM 中存在的像“VanillaDiv”而不是“vanillaDiv”這樣的 id。
javascript 代碼需要檢查
element.checked
屬性而不是詢問element === true
function toggle(flavor) {
const checkbox = document.getElementById(flavor);
const textarea = document.getElementById(flavor+"Div");
// here you need to use .checked instead of element
textarea.style.display = checkbox.checked ? "block" : "none";
}
.hideDiv {
display: none
}
<input type="checkbox" id="vanilla" onClick="toggle('vanilla')"/> Vanilla
<input type="checkbox" id="cherry" onClick="toggle('cherry')"/> Cherry
<input type="checkbox" id="apple" onClick="toggle('apple')" /> Apple
<div id="vanillaDiv" class="hideDiv">
<textarea id="vanComments">vanilla</textarea>
</div>
<div id="cherryDiv" class="hideDiv">
<textarea id="cherComments">cherry</textarea>
</div>
<div id="appleDiv" class="hideDiv">
<textarea id="appComments">apple</textarea>
</div>
添加回答
舉報