gpt4 book ai didi

javascript - JS 在 google chrome 中不起作用,它只适用于 firefox

转载 作者:行者123 更新时间:2023-12-05 00:38:02 27 4
gpt4 key购买 nike

这是我为了找到编程挑战的答案而编写的代码,它将元素插入到一个元素中,其值等于颜色名称并选择一种颜色形式,列表将改变它下面的颜色,它应该是仅限JS。但我的问题是我的代码在 Firefox 上完美运行,但在 chrome 或其他浏览器中无法运行。

const color = [
"red",
"black",
"blue"
];

let select = document.getElementById("select");

for (let i = 0; i < color.length; i++) {
let container = document.createElement("option");
container.innerText = color[i];
container.value = color[i];
container.id = i+1;
select.append(container);
}

for (let j = 1; j <= color.length; j++) {
select[j].addEventListener("click", function colorChange() {
document.getElementById("box").style.backgroundColor = `${select[j].value}`;
});
}
#box {
width: 50px;
height: 50px;
border: 1px solid green;
}
<!DOCTYPE html>
<html lang="en">

<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Test</title>
</head>

<body>
<select name="" id="select">
<option value="">Choose a color</option>
</select>
<div id="box">
</div>
<script src="script.js">
</script>
</body>

</html>

最佳答案

好消息,这不是因为浏览器禁用了 JavaScript .我尝试在 Firefox 和 Vivaldi 上运行您的代码,似乎 Vivaldi、Google Chrome 和其他基于 Chromium 的网络浏览器忽略了您插入事件触发器的请求。我的意思是您的代码的这一部分:

for (let j = 1; j <= color.length; j++) {
select[j].addEventListener("click", function colorChange() {
document.getElementById("box").style.backgroundColor = `${select[j].value}`;
});
}
不知道哪个是对的: <option>里面是否可以添加事件触发器 <select> 中的标签或不。我可能想通过 Webcompat.com 将此问题转发给我的团队.
由于您已经分配了 value每个 <option> 的 s (参见 container.value = color[i]; ),您实际上不需要为每个 <option> 添加这些事件触发器s。相反,您可以将触发器直接放在 <select> 内。元素,将您的第二个循环替换为:
select.addEventListener("click", function colorChange() {
document.getElementById("box").style.backgroundColor = select.value;
});
所以整体代码看起来像这样:
const color = [
"red",
"black",
"blue"
];

let select = document.getElementById("select");

for (let i = 0; i < color.length; i++) {
let container = document.createElement("option");
container.innerText = color[i];
container.value = color[i];
container.id = i+1;
select.append(container);
}

for (let j = 1; j <= color.length; j++) {
select[j].addEventListener("click", function colorChange() {
document.getElementById("box").style.backgroundColor = `${select[j].value}`;
});
}

select.addEventListener("click", function colorChange() {
document.getElementById("box").style.backgroundColor = select.value;
});
编辑:使用 change监听器而不是 click自从 colorChange() 以来,这将是一个更好的主意仅当下拉值已更改时才会执行函数。感谢 pyb对于 pointing this out .
更新:我已将此转发至 https://github.com/webcompat/web-bugs/issues/97662 .

关于javascript - JS 在 google chrome 中不起作用,它只适用于 firefox,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70554511/

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