2016-08-09 2 views
-1

У меня есть код, который собирает элементы с классом .colorsПередача параметров без функции инициализации

var colors = document.querySelectorAll('.colors'); 

и петлей задающего события для всех, что элементов.

for (var i=0;i<colors.length;i++) { 
    var color = colors[i]; 
    color.addEventListener('click', remember(color.getAttribute('id')), false); 
} 

Как я могу послать параметр (в данном ственном образце «color.getAttribute (» ID «)»), чтобы функционировать (в этом ственном образце «помнить») без ее начала?

function remember(color_value) { 
    localStorage.setItem('color', color_value); } 
+0

Я не думаю, что это возможно! – Pugazh

+1

Я не думаю, что ваш вопрос достаточно объяснен. Вы пытаетесь найти идентификатор «color» без использования «.getAttribute»? – NachoDawg

+0

Если вы хотите получить «id» элемента DOM, нажмите. Вы можете получить его в 'clickListener' в любом случае. Вы можете получить элемент 'target' слушателя, а затем сделать' getAttribute' –

ответ

2

Функциональные параметры не могут передаваться непосредственно слушателю событий. Вместо этого создайте простую функцию и передайте параметр, как показано ниже.

function remember(id) { 
 
    console.log(id); 
 
} 
 

 
var colors = document.querySelectorAll('.colors'); 
 

 
for (var i = 0; i < colors.length; i++) { 
 
    var color = colors[i]; 
 
    color.addEventListener('click', function() { 
 
    remember(this.getAttribute('id')) 
 
    }, false); 
 
}
.colors { 
 
    padding: 5px 10px; 
 
    background-color: lightgreen; 
 
}
<div id="div1" class="colors">Click Me - I'm Div 1</div> 
 
<br> 
 
<div id="div2id" class="colors">Click Me - I'm Div 2</div>

+0

Я считаю, что 'color' должен быть' this' в функции обратного вызова, иначе он всегда будет обращаться к последнему элементу. – moopet

+0

@moopet: Спасибо, я обновил ответ! – Pugazh