Parent 可以点击改变颜色,但是 child 不能
Parent can change color on click, but the child can not
每一个都是点击div。点击parent和parent2可以改变颜色(),但是点击child-div(some_id1、some_id2)不能改变颜色。如何避免这种情况,应该单击每个 div 并且可以更改该颜色?
当然后面我会添加更多divs.
<style>
#some_id1{
width: 50px;
height: 50px;
margin: 10px;
background-color: red;
}
#some_id2{
width: 50px;
height: 50px;
margin: 10px;
background-color: red;
}
#parent{
width: 150px;
height: 150px;
margin: 10px;
padding: 10px;
background-color: blue;
}
#parent2{
width: 150px;
height: 150px;
margin: 10px;
padding: 10px;
background-color: blue;
}
</style>
</head>
<body>
<input type="color" id="divbackgroundcolor" onchange="ColorChange()">
<div class="some_style" id="parent">
<div class="some_style" id="some_id1"></div>
<div class="some_style" id="some_id2"></div>
</div>
<div class="some_style" id="parent2"></div>
<script>
var div = document.getElementsByTagName("div");
var divCount = div.length;
var clickedDivId
for (var i = 0; i < divCount; i += 1) {
div[i].onclick = function(e) {
clickedDivId = this.id
};
}
function ColorChange(){
var x = document.getElementById("divbackgroundcolor").value;
document.getElementById(clickedDivId).style.backgroundColor = x;
}
</script>
一个很有趣的问题。这可以通过以下事实来解释:父级始终是在操作中被单击的那个,如果我们编辑您的代码以使用部分标记,我们可以看到底部部分被单击并且可以更改,但顶部的两个子级项目永远不会更改或注册为被点击,因为父项是。
<style>
#some_id1{
width: 50px;
height: 50px;
margin: 10px;
background-color: red;
}
#some_id2{
width: 50px;
height: 50px;
margin: 10px;
background-color: red;
}
#parent{
width: 150px;
height: 150px;
margin: 10px;
padding: 10px;
background-color: blue;
}
#parent2{
width: 150px;
height: 150px;
margin: 10px;
padding: 10px;
background-color: blue;
}
</style>
</head>
<body>
<input type="color" id="divbackgroundcolor" onchange="ColorChange()">
<div class="some_style" id="parent">
<section class="some_style" id="some_id1"></section>
<section class="some_style" id="some_id2"></section>
</div >
<section class="some_style" id="parent2"></section >
<script>
var div = document.getElementsByTagName("section");
var divCount = div.length;
var clickedDivId
for (var i = 0; i < divCount; i += 1) {
div[i].onclick = function(e) {
clickedDivId = this.id
};
}
function ColorChange(){
var x = document.getElementById("divbackgroundcolor").value;
document.getElementById(clickedDivId).style.backgroundColor = x;
}
</script>
y.addEventListener('click', 函数 (e) { event.stopPropagation();
clickedDivId = this.id;
每一个都是点击div。点击parent和parent2可以改变颜色(),但是点击child-div(some_id1、some_id2)不能改变颜色。如何避免这种情况,应该单击每个 div 并且可以更改该颜色? 当然后面我会添加更多divs.
<style>
#some_id1{
width: 50px;
height: 50px;
margin: 10px;
background-color: red;
}
#some_id2{
width: 50px;
height: 50px;
margin: 10px;
background-color: red;
}
#parent{
width: 150px;
height: 150px;
margin: 10px;
padding: 10px;
background-color: blue;
}
#parent2{
width: 150px;
height: 150px;
margin: 10px;
padding: 10px;
background-color: blue;
}
</style>
</head>
<body>
<input type="color" id="divbackgroundcolor" onchange="ColorChange()">
<div class="some_style" id="parent">
<div class="some_style" id="some_id1"></div>
<div class="some_style" id="some_id2"></div>
</div>
<div class="some_style" id="parent2"></div>
<script>
var div = document.getElementsByTagName("div");
var divCount = div.length;
var clickedDivId
for (var i = 0; i < divCount; i += 1) {
div[i].onclick = function(e) {
clickedDivId = this.id
};
}
function ColorChange(){
var x = document.getElementById("divbackgroundcolor").value;
document.getElementById(clickedDivId).style.backgroundColor = x;
}
</script>
一个很有趣的问题。这可以通过以下事实来解释:父级始终是在操作中被单击的那个,如果我们编辑您的代码以使用部分标记,我们可以看到底部部分被单击并且可以更改,但顶部的两个子级项目永远不会更改或注册为被点击,因为父项是。
<style>
#some_id1{
width: 50px;
height: 50px;
margin: 10px;
background-color: red;
}
#some_id2{
width: 50px;
height: 50px;
margin: 10px;
background-color: red;
}
#parent{
width: 150px;
height: 150px;
margin: 10px;
padding: 10px;
background-color: blue;
}
#parent2{
width: 150px;
height: 150px;
margin: 10px;
padding: 10px;
background-color: blue;
}
</style>
</head>
<body>
<input type="color" id="divbackgroundcolor" onchange="ColorChange()">
<div class="some_style" id="parent">
<section class="some_style" id="some_id1"></section>
<section class="some_style" id="some_id2"></section>
</div >
<section class="some_style" id="parent2"></section >
<script>
var div = document.getElementsByTagName("section");
var divCount = div.length;
var clickedDivId
for (var i = 0; i < divCount; i += 1) {
div[i].onclick = function(e) {
clickedDivId = this.id
};
}
function ColorChange(){
var x = document.getElementById("divbackgroundcolor").value;
document.getElementById(clickedDivId).style.backgroundColor = x;
}
</script>
y.addEventListener('click', 函数 (e) { event.stopPropagation(); clickedDivId = this.id;