如何根据Prototype中包含字符串的属性值选择所有元素

时间:2013-02-23 00:26:27

标签: javascript prototypejs prototype

这是我的情景。

我在页面中有以下输入。

<input name="myInput[field1]" value="field1value" type="text" />

<input name="myInput[field2]" value="field2value" type="text" />

<select name="myInput[select1]">
   <option value="1" selected="selected">Option 1</option>
   <option value="2">Option 2</option>
   <option value="3">Option 3</option>
</select>

使用Prototype,我尝试在myInput属性中选择包含name的所有字段,并遍历每个字段以将其值附加到变量,如下所示:

var myVar = field1Value + field2Value + select1Value;

这可能吗?

3 个答案:

答案 0 :(得分:1)

未测试:

var myVar;
$$('input[name="myInput"]').each(function(i) {
    myVar += $(i).value; // Might be $(this).value
});

我不再写Prototype代码了,但我认为会起作用。如果没有,它应该让你足够接近完成它。

答案 1 :(得分:1)

正确的解决方案如下:

var myVar;
$$('[name^="myInput"]').each( function(i) {
   myVar += i.value;        
});

他们选择所有输入的关键,myInput属性中包含name的输入正在使用^符号前的=符号。所以[name^="myInput"]是实现这一目标的正确选择器。

答案 2 :(得分:0)

您还可以将类添加到您想要总结的任何字段

var sum = 0;
$$('.addthese').each(function(i){
    sum += i.getValue()
});

这使得它更灵活,因为您不必担心表单元素的名称,只要它具有应用于它的类,将添加该值

我使用了getValue()方法,因为它可以解决DOM中没有value属性的某些表单元素的问题。