Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jQuery中与$('input[name$=“value”]”等价的Javascript?_Javascript_Jquery_Html_Dom - Fatal编程技术网

jQuery中与$('input[name$=“value”]”等价的Javascript?

jQuery中与$('input[name$=“value”]”等价的Javascript?,javascript,jquery,html,dom,Javascript,Jquery,Html,Dom,如何仅使用javascript获取名称属性以特定值结尾的输入元素 我发现这个$'input[name$=value]'方法在中可用 javascript中有这样的函数吗?由于某些原因,我无法使用jQuery。此方法返回一个元素数组 var elements = document.getElementsByName("value"); 您可以这样做: console.log(document.getElementsByName("value")[0]); 或者,如果要查找名称中包含值的第一个输

如何仅使用javascript获取名称属性以特定值结尾的输入元素

我发现这个$'input[name$=value]'方法在中可用


javascript中有这样的函数吗?由于某些原因,我无法使用jQuery。

此方法返回一个元素数组

var elements = document.getElementsByName("value");
您可以这样做:

console.log(document.getElementsByName("value")[0]);
或者,如果要查找名称中包含值的第一个输入元素:

var searchString = "value";
var elems = document.getElementsByTagName('input'), wantedElem;

for(var i = 0, len = elems.length; i < len; i++) {
    if(elems[i].name.lastIndexOf(searchString) == elems[i].name.length-searchString.length) {
        wantedElem = elems[i];
        break;
    }
}

console.log(wantedElem);

我很惊讶还没有人提到这一点。您是否尝试过:

var elements = document.querySelectorAll('input[name$="value"]');
这仅在浏览器支持该方法时才起作用,但如果找到支持,jQuery将在下面使用该方法

以下表格列出了该方法的浏览器支持:


我将假设您已经将这些元素放置在它们所属的元素中

通过DOM API遍历表单控件的最简单方法是通过HTMLCollection。它允许命名遍历,这对于特定元素非常方便

例如,考虑下面的标记:

<form action="./" method="post" name="test"
    onsubmit="return false;">
    <fieldset>
        <legend>Test Controls</legend>
        <input name="control_one" type="text"
            value="One">
        <input name="control_two" type="text"
            value="Two">
        <input name="control_three" type="text"
            value="Three">
    </fieldset>
</form>
正如你所看到的,这真的不太难。使用HTMLCollections的结果是支持新旧浏览器。因为HTMLCollections是在DOM 0中实现的,所以它们得到了广泛的支持

在将来,我建议使用不那么模糊的遍历。如果您控制正在遍历的文档树,即编写标记,那么您应该已经知道控件的名称。否则,必须使用前面提到的模糊方法

工作示例:


更多信息,请参阅。

JQuery是用javascript编写的,所以在函数中包含JQuery源代码:PHe说他不能使用JQuery。出于某种原因?修正这个原因,而不是绕开它。如果你不能添加一个标记,你能改变你的标记吗?你的答案在这里,比我早50秒…叹气…=/+这是一个很好的答案+1我现在可以删除我的了:/为什么还要发帖呢?OP什么也学不到。有很多更好的选择可供选择-OP确实学到了一些东西。他们学会了使用选择器从DOM中选择元素的正确方法,而不需要第三方库querySelector和querySelectorAll都内置在浏览器中。@我认为接受答案的OP与您的assertionDownvote冲突,因为答案正确,但与问题不可比如问题所述。它是[name$=value]。。。注意,$This获取具有名称值的任何内容,其选择器仅获取输入标记。是的,您需要getElementsByTaginput,然后遍历该数组以值结尾的元素。将其更改为ifelems[i]。name.lastIndexOfvalue==elems[i].name.length-5,它应该只获取以valuename$=value结尾的元素,这并不意味着存在属性名$,而是存在以给定的valueOh,woops,fixed结尾的属性名。误解了这个问题如果你去掉了-1 after.length,它会起作用:@devnull69:length比实际索引长一倍,我们要寻找的字符串是0索引的,所以我相信这是正确的。
var test = document.forms.test,
    controls = test.elements;

function traverseControl(control)
{
    var patt = /one$/,
        match = patt.test(control.name);
    if (match) {
        // do something
        console.log(control);
    }
}

function traverseControls(nodes)
{
    var index;
    if (typeof nodes === "object" &&
        nodes.length) {
        index = nodes.length - 1;
        while (index > -1) {
            traverseControl(
                nodes[index]
            );
            index -= 1;
        }
    }
}

traverseControls(controls);