2015-03-30 2 views
0

Я извлекаю некоторую информацию из файла xml (информация о фильме), и я динамически создаю некоторые элементы DOM в соответствии с каждым фильмом. Я хочу, когда я нажимаю на элемент test, чтобы получить значение названия фильма. Прямо сейчас, независимо от того, какой фильм я нажимаю, он получает название последнего фильма, который был представлен.Javascript: Получить innerHTML динамически созданного div

Как я могу получить заголовок каждого отдельного фильма, когда я нажимаю на этот div, а не последний, введенный for-loop?

xmlDoc=xmlhttp.responseXML; 
     var x=xmlDoc.getElementsByTagName("movie"); 
     for (i=0;i<x.length;i++) 
     { 
      var titlu = x[i].getElementsByTagName("title")[0].childNodes[0].nodeValue; 
      var description = x[i].getElementsByTagName("description")[0].childNodes[0].nodeValue; 

      var descriere = document.createElement('div'); 
      descriere.className='expandedDescriere'; 
      descriere.innerHTML = description; 

      var titlediv = document.createElement('div');  
      titlediv.className = 'title';  
      titlediv.id='title';   
      titlediv.innerHTML = title; 

      var test=document.createElement('div'); 
      test.className='test'; 
      test.onclick= function(){ 
          var filmName= test.previousSibling.innerHTML; 
          alert(filmName); 
          } 
      placeholder.appendChild(titlediv); 
      placeholder.appendChild(test); 
      placeholder.appendChild(descriere); 
     } 

ответ

2

Я думаю, ваша проблема может быть в функции вы присвоили onclick:

test.onclick= function(){ 
         var filmName= test.previousSibling.innerHTML; // <=== 
         alert(filmName); 
       } 

маркированная линия должна быть var filmName= this.previousSibling.innerHTML;

Я думаю, что var test является hoisted из for цикл, означающий, что при завершении цикла вся функция onclick ссылается на ту же переменную test, которая является последним созданным вами элементом.

+0

Спасибо :) она работала. –

0

Использование this для ссылки на щелкнул элемент:

test.onclick = function() { 
       var filmName = this.previousSibling.innerHTML; 
       alert(filmName); 
       }; 
+0

Спасибо, это сработало, но я отвечу ниже. Это одно и то же, но я думаю, что точки с правильным ответом помогут ему больше, чем вы. –

Смежные вопросы