我正在處理一個分配,需要單擊輸入div中的span元素文本時,在輸出div中輸出相同的文本。該部分我已經成功完成了,但是在輸入格中的每個span元素的左邊是一個複選框,在單擊所述span元素時還需要進行檢查。單擊Span時切換複選框
我不允許使用自己的唯一ID來定位每個單獨的複選框,因爲我將在稍後按按鈕和提示時添加更新的複選框和span元素。這是事件委派的一項任務。
然後,我需要能夠取消複選框,並刪除附加的輸出,但首先,我不知道如何定位複選框。我能想到的唯一的事情就是不管怎麼說,無論點擊哪個span元素的索引號,都會點擊該複選框的索引號,但我不確定這是否是最好的方法以及如何去做這樣做。
此外,此作業不應該包含任何JQuery。我的下一個項目實際上是在JQuery中重做這個任務。任何幫助,將不勝感激!
HTML:
<!DOCTYPE html>
<html>
<head>
<title>Canvas Document Object Model Exercise</title>
<link rel="stylesheet" href="canvas_stylesheet.css">
</head>
<body>
<div id="input">
<form>
<input class="checkbox" type="checkbox"><span class="values">Apple</span></br></br>
<input class="checkbox" type="checkbox"><span class="values">Mango</span></br></br>
<input class="checkbox" type="checkbox"><span class="values">Grape</span></br></br>
<input class="checkbox" type="checkbox"><span class="values">Strawberry</span></br></br>
<input class="checkbox" type="checkbox"><span class="values">Cherry</span>
</form>
</div>
<div id="output"></div>
CSS:
#input {
width: 250px;
height: 300px;
float: left;
padding: 20px 0 30px 15px;
border-style: solid;
border-color: black;
border-width: 1px;
}
.values {
display: inline;
}
/*
#input form input {
padding: 20px 20px 20px 20px;
}
*/
#output {
width: 225px;
height: 326px;
float: left;
border-top: 1px solid black;
border-right: 1px solid black;
border-bottom: 1px solid black;
padding: 4px 20px 20px;
}
JS:
window.onload = UncheckAll;
function UncheckAll() {
var w = document.getElementsByTagName('input');
for (var i = 0; i < w.length; i++) {
if (w[i].type == 'checkbox') {
w[i].checked = false;
}
}
}
document.getElementById("input").addEventListener("click", function(e){
if (e.target.nodeName === "SPAN") {
var node = document.createElement("P");
var textnode = document.createTextNode(e.target.innerHTML);
node.appendChild(textnode);
document.getElementById("output").appendChild(node);
node.setAttribute("class", "outputItem")
}
});
*「在某種程度上說,被點擊說span元素的任何索引號會被人說複選框的索引號點擊」 * - 這將工作,或顯示您可以使用特定HTML的['。 previousSibling'屬性](https://developer.mozilla.org/en/docs/Web/API/Node/previousSibling)(即'e.target.previousSibling.checked = true')。 – nnnnnn
這就在這裏!我恍然大悟,在實際閱讀之前意識到這一點並完成了這項任務的輸入/輸出部分。我想我爲自己感到驕傲,但我也很高興看到答案是張貼的情況下,我沒有頓悟哈哈。謝謝! – Andrew