[英]How can I assign value of get element by id into array in Javascript?
as you can see I have a lot of repetitive code below...如您所见,我在下面有很多重复的代码...
var c0 = document.getElementById('c0');
var c1 = document.getElementById('c1');
var c2 = document.getElementById('c2');
var c3 = document.getElementById('c3');
var c4 = document.getElementById('c4');
var c5 = document.getElementById('c5');
var c6 = document.getElementById('c6');
var c7 = document.getElementById('c7');
var c8 = document.getElementById('c8');
var c9 = document.getElementById('c9');
var c10 = document.getElementById('c10');
var c11 = document.getElementById('c11');
c0.addEventListener("click", function() {revealCard(0); });
c1.addEventListener("click", function() {revealCard(1); });
c2.addEventListener("click", function() {revealCard(2); });
c3.addEventListener("click", function() {revealCard(3); });
c4.addEventListener("click", function() {revealCard(4); });
c5.addEventListener("click", function() {revealCard(5); });
c6.addEventListener("click", function() {revealCard(6); });
c7.addEventListener("click", function() {revealCard(7); });
c8.addEventListener("click", function() {revealCard(8); });
c9.addEventListener("click", function() {revealCard(9); });
c10.addEventListener("click", function() {revealCard(10); });
c11.addEventListener("click", function() {revealCard(11); });
So I want to shorten this obviously by creating for loop.所以我想通过创建 for 循环来明显地缩短它。 I did this in following way:
我通过以下方式做到了这一点:
var c = [];
for(i=0; i<12; i++)
{
c[i] = document.getElementById('c'+i);
c[i].addEventListener("click", function() {revealCard(i); });
}
Unfortunately it didn't work.. I didn't find similar question so here I am.不幸的是它没有用..我没有找到类似的问题,所以我在这里。 I do not have any errors in console so it's strange for me.
我在控制台中没有任何错误,所以这对我来说很奇怪。 Everything seems to be correct but still it does not work.
一切似乎都是正确的,但仍然无法正常工作。 I would be grateful if you helped me.
如果你能帮助我,我将不胜感激。
A more preferable way would be to add a class
to the joint parent of those elements, and use addEventListener
on it.更可取的方法是将
class
添加到这些元素的联合父级,并在其上使用addEventListener
。 That way, with event bubbling , you can listen to a click event and act according to the specified element.这样,通过事件冒泡,您可以监听点击事件并根据指定的元素进行操作。
For example,例如,
const wrapper = document.querySelector('.wrapper'); wrapper.addEventListener('click', event => { console.log(event.target.id) })
<div class="wrapper"> <button class="some-button" id="c0"> c0 </button> <button class="some-button" id="c1"> c1 </button> <button class="some-button" id="c2"> c2 </button> </div>
Fiddle: https://jsfiddle.net/tkore/y9dmkco2/小提琴: https://jsfiddle.net/tkore/y9dmkco2/
You can modify the code and use it like this -您可以修改代码并像这样使用它 -
let obj = {};
for(let i=0; i<12; i++)
{
obj[`c${i}`] = document.getElementById(`c${i}`);
obj[`c${i}`].addEventListener("click", function() {revealCard(i); });
}
You didn't declare your i
variable which caused a bug, try using let
您没有声明导致错误的
i
变量,请尝试使用let
var c = []; for (let i = 0; i < 3; i++) { c[i] = document.getElementById('c' + i); c[i].addEventListener("click", function() { console.log(i); }); }
<div id="c0">test</div> <div id="c1">test</div> <div id="c2">test</div>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.