如何按名称获取元素并设置其值

时间:2012-04-26 18:40:03

标签: javascript jquery

应该有一个简单的解决方案。我需要按名称获取输入元素并设置其值。

以下Javascript不起作用:

x = document.getElementsByName($('#questions').val());
x.value=this.value;  

是否有使用JQuery的简单解决方案?

5 个答案:

答案 0 :(得分:9)

描述

您正在混合普通的javascript和jQuery。 使用属性选择器。

查看我的示例和此jsFiddle Demonstration

示例

<强> HTML

<input type="text" name="nameOfTheInputElement"/>

<强>的jQuery

$(function() {
    $("input[name='nameOfTheInputElement']").val("your value");
});
​

修改

如果您因某种原因需要更改名称是另一个元素中的值的元素 然后这样做。 jsFiddle Demonstration

<强> HTML

<input type="text" id="questions" value="nameOfTheInputElement"/>    
<input type="text" name="nameOfTheInputElement"/>

<强>的jQuery

$(function() {
    var name = $("#questions").val();
    $("input[name='"+name +"']").val("your value");
});​

更多信息

答案 1 :(得分:2)

getElementsByName()会返回一个节点列表,因此您需要获取第一个getElementsByName(...)[0]

但是你已经在使用jQuery了,所以使用它。阅读有关jQuery selectors

的一些教程

答案 2 :(得分:1)

简单,纯粹的JavaScript(因此更快)解决方案:

var x = document.getElementsByName(document.getElementById('questions').value)[0].value = this.value;

我知道jQuery的标语是“少写,做多”,在很多情况下它确实是真的... many cases !== always,但是; - )

答案 3 :(得分:1)

试试这个

var q = $("#question").val();
var x = $("input[name='" + q + "']").val();

在第二行,变量q,输入中提供的带有'问题'的名称,将用'括起来',并且可以包含任何支持的字符,如空格,:, - 等

如果您需要组件的值而不管其标记,您可以这样做:

var x = $("[name='" + q + "']").val();

请注意,此方法$("[name='" + q + "']")可以返回多个元素,但.val()只会返回第一个元素的值。

答案 4 :(得分:0)

如果我正确理解您的问题,您希望按名称获取元素,并且您选择的元素的名称将由某个下拉列表或文本区域指定。

这是我的看法:

<强> HTML

<input type="text" id="enteredName">
<button id="doTheStuff">Do the work</button>

<input name="one" value="One">
<input name="two" value="Two">

<强>的jQuery

$('#doTheStuff').click(function(){
    var objectOfInterest = $('[name=\'' + $('#enteredName').val() + '\']');
    alert(objectOfInterest.val());
});

Working example

这是another working example使用下拉列表指定选择名称。