我有动态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);
}
答案 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');
});