gpt4 book ai didi

javascript - div 中的对象使用 div ID 动态连接

转载 作者:行者123 更新时间:2023-11-28 05:38:04 26 4
gpt4 key购买 nike

第一个输入创建一个名为 Enter # of Circles 的循环,该循环创建多个 div。每个 div 包含一个圆圈和一个输入对象。

输入 Color 应该使用从 divID 中提取的 ID 更改同一 div 中圆圈的颜色。

ID 已从循环中拉出,但由于事件监听器,它似乎无法正常工作,但似乎没有任何效果。

有什么地方做错了吗?

 <!DOCTYPE html>
<head>
<title>Bins Status</title>
<style>
div {
width: 120px;
height: 120px;
display: inline-block;
margin-left: 1px;
}
</style>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width; initial-scale=1.0; maximum-scale=1.0; user-scalable=0; target-densitydpi=device-dpi" />
<link rel="stylesheet" type="text/css" href="style.css"/>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"> </script>
<script type="text/javascript" src="script.js"></script>
</head>
<body>
<br>
<b>Enter # of Circles<b>
<br>
<input type="integer" id="circles">
</b></b>
<form>
<div id="Participentfieldwrap">
<svg height="100" width="200">
<line x1="0" y1="50" x2="100000000" y2="10000" style="stroke:rgb(0,255,0);stroke-width:5" />
<svg height="100" width="100">
<circle id="cir" cx="50" cy="50" r="30" stroke="black" stroke-width="3" />
</svg>
</svg>
<br>
<b>Color<b>
<br>
<input type="integer" id="Color">
</b></b>

<script>
//Inputing integer 1, 2 or 3 which instantly applies color formatting (RGB) to circle in the same div
var cir = document.getElementById("cir");
var into = document.getElementById("Color");
into.addEventListener("keyup", myFunction, false);

function myFunction() {
if(document.getElementById("Color").value == 1)
cir.style.fill = "green";
else if(document.getElementById("Color").value == 2)
cir.style.fill = "red";
else if(document.getElementById("Color").value == 3)
cir.style.fill = "blue";
else cir.style.fill = "Yellow";
}
</script>
</div>
</form>


<script type="text/javascript">
//Loop for creating multiple divs in a form using a limit that is set in an integer input

var participantsField = document.getElementById("Participentfieldwrap"),
form = document.getElementsByTagName("form")[0],
ContestantNum = document.getElementById("circles"),
i, timer;

function createCircles(val) {
// Removing previous circles
while (form.firstChild) {
form.removeChild(form.firstChild);
}
for(i = 0; i < val; i++) {
var clone = participantsField.cloneNode(true);
clone.id = "Participentfieldwrap_" + i;
clone.querySelector("input").id = "Color_" + i;
clone.querySelector("circle").id = "cir_" + i;
form.appendChild(clone);
}
}
ContestantNum.addEventListener('keydown', function(e) {
if(timer) {
clearTimeout(timer);
}
timer = setTimeout(function() {
createCircles(ContestantNum.value);
}, 800);
});
</script>
</body>
</html>

https://fiddle.jshell.net/o96y7bf2/

最佳答案

问题是您的函数调用了 id“cir”和“color”,而当您创建圆圈时,id 是“cir_0”和“color_0”。另一个问题是 DOM 中的新元素不会激活页面加载时启动的功能。

我不知道如何用纯 javascript 做到这一点,但是 here我用 jquery 留下了一个解决方案。

来自墨西哥的问候。

关于javascript - div 中的对象使用 div ID 动态连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38074757/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com