如何在纯JavaScript中使用类似jQuery的选择器

如何在纯JavaScript中使用类似jQuery的选择器,javascript,jquery,Javascript,Jquery,我想要的是: var arrinput = $('input[name$="letter"]') 如何将其从jQuery风格更改为纯javascript风格 所以我想要标签,它的名称以“字母”结尾 我改变了一点代码。。。我的浏览器不支持querySelector,仅供参考我正在c#winforms上使用webbrowser组件 var items = document.getElementsByTagName('input'); for (var i=0; i<items.length

我想要的是:

var arrinput = $('input[name$="letter"]')
如何将其从jQuery风格更改为纯javascript风格

所以我想要
标签,它的
名称
以“字母”结尾


我改变了一点代码。。。我的浏览器不支持querySelector,仅供参考我正在c#winforms上使用webbrowser组件

var items = document.getElementsByTagName('input');
for (var i=0; i<items.length; i++) {
    var item = items[i];
    if (/letter$/.test(item.name)) {
        item.value = "A letter";
    }
}
var items=document.getElementsByTagName('input');
对于(var i=0;i对于现代浏览器:

document.querySelector('input[name$=letter]”);

将返回第一场比赛

document.querySelectorAll('input[name$=letter]”);

将返回匹配项的列表


我怀疑如果你浏览jquery源代码,它会在可用时使用
document.querySelector[All]

这是一篇老文章,但我搜索了一个类似的解决方案,但没有找到

所以我做了一个小函数来实现这一点(它是可优化的):


几乎可以,但是(
for(item in inputs)
不是这样工作的。
item
将是一个索引。您需要
for(i in inputs){var item=inputs[i];…}
或者更好的是,
for(var i=0;i
Whoops!谢谢。我忘了这一点——我刚刚在使用Python:Dif(/letter$/.test(item.name))
/letter$/.test(item.name)
是对以
letter
结尾的字符串的正则表达式测试。我可以这样做吗?
var temp=“letter”;var re=new RegEx(“/”+temp+“$/”);if(re.test(item.name))
因为我不想在我的页面中包含jQuery.js:)因为我不想拥有jQuery库。您的答案以及“为什么我应该使用jQuery而不是自己做这件事”的答案就是将Hemlock的
querySelector
答案与BenjaminHarris的蛮力搜索合并,这样,如果
querySelector
在浏览器中不可用,您可以后退。或者,使用jQuery来完成所有这些。太糟糕了,我的浏览器不支持querySelector:(仅供参考,我在c#winforms上使用webbrowser组件
/**
 * Searches and finds the parent node for a dom object
 * 
 * @examples: 
 *  getParent(elem, 'div')                  // The first div parent found
 *  getParent(elem, 'div[id]')              // The first div parent with an id found
 *  getParent(elem, 'div[id="toto"]')       // The first div parent with id equals toto found
 *  getParent(elem, 'div[id=^="toto"]')     // The first div parent with id start by toto found
 *  getParent(elem, 'div[id=$="toto"]')      // The first div parent with id end by toto found
 *  getParent(elem, 'div[id=*="toto"]')     // The first div parent with id contains toto found
 *
 * @param domObject elem
 * @param string [target]
 * @return domObject or null
 */
function getParent(elem, target)
{
    if(target == null)
        return elem.parentNode;

    var elem_name = target,
        attr_name = null, attr_value = null, 
        compare_type = null,
        match_val = target.match(/\[.+[^\[\]]\]$/i);

    if(match_val != null) 
    {
        elem_name = elem_name.replace(match_val[0], '');

        var expr = match_val[0].substr(1, match_val[0].length-2),
            tmp = expr.split('=');

        attr_name = tmp[0];
        if(tmp.length == 2) 
        {
            attr_value = tmp[1].toLowerCase();
            attr_value = attr_value.replace(/(\'|\")+/ig, '');

            if(attr_name.match(/\^$/))
                compare_type = 'begin';
            else if(attr_name.match(/\*$/))
                compare_type = 'all';
            else if(attr_name.match(/\$$/))
                compare_type = 'end';
            else
                compare_type = 'simple';

            if(compare_type != 'simple')
                attr_name = attr_name.substr(0, attr_name.length-1);
        }
    }

    var parent = elem.parentNode;

    do 
    {
        if(parent.nodeName.toUpperCase() == elem_name.toUpperCase())
        {
            if(attr_name != null) 
            {
                var attribute = parent.getAttribute(attr_name).toLowerCase();
                if(attribute != null && attribute != '') 
                {
                    if(attr_value == null)
                        return parent;

                    if(compare_type == 'simple' && attribute == attr_value)
                        return parent;
                    if(compare_type == 'begin' && attribute.match(eval('/^'+attr_value+'/ig')))
                        return parent;
                    if(compare_type == 'end' && attribute.match(eval('/'+attr_value+'$/ig')))
                        return parent;
                    if(compare_type == 'all' && attribute.match(eval('/'+attr_value+'/ig')))
                        return parent;
                }
            } else {
                return parent;
            }
        }

        parent = parent.parentNode;
    } 
    while(parent != null);

    return null;
}