1

我有一些html,如下所示:

<form name="test_form">
<input type="hidden" name="product_id" value="560">
<input type="hidden" name="product_name" value="test product">
<input type="hidden" name="product_type" value="7">
<input type="hidden" name="product_id" value="560">
</form>

请注意,“名称”有两个值为“569”的属性。

稍后,也使用 javascript 通过以下方式查找 product_name 值:

var c = $("[name='test_form']");
var product_name = c.product_name.value;

相信我,我明白这段代码有多糟糕。但是,我继承了一个代码库,该代码库是这样编写的,具有重复的属性,并且 javascript 分散在以上述方式引用属性的周围。我最终会用更优雅的东西来解决这个问题,但与此同时,需要一些东西来修补它。在 Firefox 中成功查找 product_name,但在 google chrome 中查找失败。任何人都知道无需通过代码并删除重复属性即可快速解决此问题吗?基本上,我只需要 product_name 变量部分就可以在 google chrome 中正确读取 product_name 属性,尽管存在多个具有该名称的元素(幸运的是,具有该属性名称的所有元素都具有相同的值)。再一次,这只是我需要的临时补丁,所以请不要

4

2 回答 2

0

由于您正在创建一个不能product_name用于查询 DOM 的 jQuery 对象,您可以使用find()val()方法,注意单独使用属性选择器效率不高,最好先使用标签选择器。

var $c = $("form[name='test_form']");
var product_name = $c.find('input[name="product_name"]').val();

如果要使用当前代码获取输入的值,则应将 jQuery 对象转换为 DOM Element 对象,可以使用[index]orget(index)方法。

var $c = $("form[name='test_form']");
var product_name = $c[0].product_name.value;

http://jsfiddle.net/d7YEV/

于 2012-10-26T05:32:03.990 回答
0

如果你使用 jQuery,你也应该使用它来获取元素值。

所以而不是

var c = $("[name='test_form']");
var product_name = c.product_name.value;

你应该使用

var product_value = $('form[name="test_form"] input[name="product_name"]').val()
var product_type = $('form[name="test_form"] input[name="product_type"]').val()
于 2012-10-26T05:32:14.393 回答