动态id有两个变量

时间:2012-02-29 06:25:15

标签: jquery jsp

我想做类似的事情 -

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

但警告即将来临“undefiend”

我想让id'price_i_j'动态化。

3 个答案:

答案 0 :(得分:0)

当找不到ID时,会出现警告未定义。 你应该调试代码。 首先alert($('#wd_markup_'+i+'_'+j));并检查它是否存在。然后检查浏览器的错误控制台,是否有任何错误。

答案 1 :(得分: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');
          }
       }
    })
}

答案 2 :(得分:0)

在调用每个单击函数时(当用户单击#radio时),i等于外循环的计数(+1),因此如果count 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