2012-02-29 3 views
0

Я хочу сделать что-то как-Динамический идентификатор с двумя переменными

for(var i=0; i < count;i++) { 
    $('#radio_'+i).click(function() { 
     for(var j=0;j < count1;j++) { 
      alert ($('#price_'+i+'_'+j).val()); 
     } 
    }) 
} 

Но тревога приходит «undefiend».

Я хочу сделать идентификатор 'price_i_j' динамическим.

+2

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

+0

Можете ли вы показать разметку? – Starx

+0

try alert ($ ('# wd_markup _' + i + '_' + j) .length) и посмотреть, существуют ли элементы – charlietfl

ответ

0

Предупреждение undefined приходит, когда идентификатор не найден. Вы должны отладить код. Первый alert($('#wd_markup_'+i+'_'+j)); и проверьте, присутствует он или нет. и после этого проверьте консоль ошибок браузера, есть ли какая-либо ошибка или нет.

+1

, когда я помещаю # wd_markup_0 _ '+ j, он отлично работает, но когда я заменяю 0 переменной, он дает' undefined ' – make

0

Выполните проверку, прежде чем давать предупреждения

for(var i=0; i < channelCount;i++) { 
    $('#radio_'+i).click(function() { 
     for(var j=0;j < dopCount;j++) { 
      if($('#price_'+i+'_'+j).length){ 
       alert ($('#price_'+i+'_'+j).val()); 
      }else{ 
       alert('#price_'+i+'_'+j + ' does not exist'); 
      } 
     } 
    }) 
} 
0

В точке каждой функции щелчка вызывается (если пользователь нажмет #radio) я это равно количеству внешнего цикла (+1), так что если кол-во max было 2, тогда «i» было бы 3 в каждой функции щелчка - вот почему цена не определена, поскольку price_3 не существует. Что вам нужно сделать, так это получить значение i из элемента радио, как показано ниже. Я создал jsfiddle для вас, чтобы увидеть, как работает ниже.

for (var i = 0; i < 3; i++) { 
    $('#radio_' + i).click(function() { 
     var i = ($(this).attr("id").substr(6)); 
     $('[id^=price]').css("color", "black"); 
     for (var j = 0; j < 3; j++) { 
      var s = '#price_' + i + '_' + j; 
      console.log($(s).text());    
      $(s).css("color", "red"); 
     } 
    }) 
}​ 

Пример jsFiddle

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