Jquery, ajax,通过id获取元素
Jquery, ajax, getting an element by id
我有一些ajax onclick的东西,更新这一行当值从菜单中选择:
<li id="li_273" data-pricefield="special" data-pricevalue="0" >
目的是获取该值(data- pricvalue),然后将其乘以从另一个输入框输入的金额。下面是我的函数来实现这一点:
$('#main_body').delegate('#element_240','keyup', function(e){
var temp = $(this).attr("id").split('_');
var element_id = temp[1];
var price = $('#li_273').data("pricevalue");
var ordered = $(this).val();
var price_value = price * ordered;
price_value = parseFloat(price_value);
if(isNaN(price_value)){
price_value = 0;
}
$("#li_273").data("pricevalue",price_value);
calculate_total_payment();
});
除了我得到以下错误:未捕获的类型错误:不能调用null的方法'data'
似乎我试图从getElementById中获取价格值是不正确的。有什么建议吗?
UPDATE:以上代码是根据您的建议编辑的,感谢所有人。
这部分错误:
var price = document.getElementById('#li_273').data("pricevalue").val();
相反,你应该在这里使用jQuery:
var price = $('#li_273').data("pricevalue");
顺便说一句,你不应该使用.val()
,因为.data()
已经返回一个字符串。.val()
仅用于<input>
、<select>
等输入元素
同样,剩下的代码应该像这样:
var price_value = parseFloat(price);
if(isNaN(price_value)){
price_value = 0;
}
getElementById不返回一个jQuery对象,它只是返回一个普通的DOM对象。
你可以将任何DOM对象包装在jQuery调用中以获得它作为jQuery对象:
$(document.getElementById("li_273")).data("pricevalue").val();
或者干脆使用jQuery
$("#li_273").data("pricevalue").val()
你的调用应该是document.getElementById('li_273')
,这是一个正常的方法,不需要像jQuery那样的哈希。
EDIT正如@kennypu指出的那样,你然后在非jQuery对象上使用jQuery。@Craig有最好的解决方案。
document.getElementById('#li_273').data("pricevalue").val();
应该是jQuery('#li_273').data("pricevalue").val();
变量price_value
也不存在,我想你指的是price
。
,
$('#main_body').delegate('#element_240','keyup mouseout change', function(e){
var temp = $(this).attr("id").split('_');
var element_id = temp[1];
var price = $('#li_273').data("pricevalue").val();
var ordered = $(this).val();
var price_value = parseFloat(price);
if(isNaN(price_value)){
price_value = 0;
}
$("#li_273").data("pricevalue",price_value);
calculate_total_payment();
});
document.getElementById('#li_273')
是问题所在。该方法无法识别散列。如果您想使用该方法获取元素ID,请尝试document.getElementById('li_273')
,它将起作用。
既然你正在使用jQuery,为什么你要使用文档。getElementById而不是$(...)
?应该是:
$('#li_273').data("pricevalue")
还要注意,data()
方法只定义在jQuery对象上,而不是DOM元素上。并且您不需要在它之后调用val()
—这是用于获取表单元素的值。
你的getElementById是错误的javascript你不需要#
,如果你使用jQuery这样做(我也删除了。val(),因为它不需要):
$('#main_body').delegate('#element_240','keyup mouseout change', function(e){
var temp = $(this).attr("id").split('_');
var element_id = temp[1];
var price = $('#li_273').data("pricevalue");
var ordered = $(this).val();
price_value = parseFloat(price_value);
if(isNaN(price_value)){
price_value = 0;
}
$("#li_273").data("pricevalue",price_value);
calculate_total_payment();
});
- 如何在jQuery中获取元素的形式
- 通过id和class属性获取元素
- Javascript:Can't使用getElementById获取元素
- 使用jquery.html()获取元素本身的html
- 如何从iframe内部获取元素
- Javascript函数获取元素内容
- 使用模板后,使用Angular获取元素属性值
- 获取元素类名的部分
- 从JSON.parse获取元素
- 获取元素内部的缩写
- 在不引用文档的情况下使用AngularJS获取元素
- 如何获取元素's的title属性
- 使用Javascript,获取元素的方法是什么,基于打开和关闭标记之间的文本
- Javascript获取元素背景图像,但消除了“;url()”;
- Javascript:按类获取元素,但跳过某个类
- 当display:none时,getElementById()无法获取元素
- 我的ID获取元素不起作用
- 如何获取元素:使用javascript和CORS悬停背景
- 能够获取元素长度,但不能获取内部 HTML
- 如何使用jQuery在模板kendo UI中获取元素类