无法通过for循环传递动态div id

时间:2015-06-12 12:24:20

标签: javascript input prototypejs

我有动态ID存储在输入字段中,当我尝试res[i]它会给我error.i尝试javascript但没有成功。收到此错误

TypeError: $(...) is null


newprice = $("#"+res[i]).value();

表单输入

<input type="hidden" id="customprice" value="select_91,select_92,select_93" />




    <select  id="select_91" ><option value="">-- Vælg venligst --</option><option value="287" price="0" >1 pose  </option><option value="288" price="50" selected>2 poser  +DKK 50,00</option></select> 

<select  id="select_92" ><option value="">-- Vælg venligst --</option><option value="287" price="0" >1 pose  </option><option value="288" price="50" selected>2 poser  +DKK 50,00</option></select>  

<select  id="select_93" ><option value="">-- Vælg venligst --</option><option value="287" price="0" >1 pose  </option><option value="288" price="50" selected>2 poser  +DKK 50,00</option></select>   

我的代码是

customprice = $('customprice').value;
res = customprice.split(",");
price = 0;
alert(res.length);
for (i = 0; i < res.length; i++) {
    alert(res[i]);
     newprice = $("#"+res[i]).value();
    price = price + parseFloat(newprice);
}

1 个答案:

答案 0 :(得分:2)

如果这是PrototypeJS,那么您的错误是$('#<elementid>'),因为$()方法的ID不是CSS选择器。

所以 IF 这是PrototypeJS继承人如何解决你的问题并改善/简化它

鉴于您的HTML

customprice = $('customprice').value;
res = customprice.split(",");
price = 0;

res.each(function(item){
    price += parseFloat($F(item));
});

您也可以像这样链接这些

var price = 0;
$F('customprice').split(',').each(function(item){
    price += parseFloat($F(item));
});

** $F()方法返回传递的id的值,基本上是

$('<elementid>').value === $F('<elementid>')

修改

获取所选选项元素的价格属性

var price = 0;
$F('customprice').split(',').each(function(item){

    var optionprice = $(item).options[$(item).selectedIndex].readAttribute('price');

    price += parseFloat(optionprice);

    //this way might also work but the above will work
    var option1price = $(item).down('option[selected]').readAttribute('price');


});