JavaScript 通过CSS选择器获取元素

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaScript 通过CSS选择器获取元素相关的知识,希望对你有一定的参考价值。

function $$(xpath,root) { 
  xpath = xpath
    .replace(/((^|\|)\s*)([^/|\s]+)/g,'$2.//$3')
    .replace(/\.([\w-]+)(?!([^\]]*]))/g, '[@class="$1" or @class$=" $1" or @class^="$1 " or @class~=" $1 "]')
    .replace(/#([\w-]+)/g, '[@id="$1"]')
    .replace(/\/\[/g,'/*[');
  str = '(@\\w+|"[^"]*"|\'[^\']*\')';
  xpath = xpath
    .replace(new RegExp(str+'\\s*~=\\s*'+str,'g'), 'contains($1,$2)')
    .replace(new RegExp(str+'\\s*\\^=\\s*'+str,'g'), 'starts-with($1,$2)')
    .replace(new RegExp(str+'\\s*\\$=\\s*'+str,'g'), 'substring($1,string-length($1)-string-length($2)+1)=$2');
  var got = document.evaluate(xpath, root||document, null, 5, null);
  var result=[];
  while (next = got.iterateNext())
    result.push(next);
  return result;
}



// Example usage:

$$('#title')[0].innerHTML='Greased';

$$('a[@href $= "user.js"]').forEach(function (a) {
  a.innerHTML='check it out a script';
});

$$('a[@href ^= "http"]').forEach(function (a) {
  a.innerHTML += ' (external)';
});

以上是关于JavaScript 通过CSS选择器获取元素的主要内容,如果未能解决你的问题,请参考以下文章

怎样通过CSS选择器获取元素节点或元素节点集合

css都有哪些选择器

史上最全的jQuery选择器

第一百三十九节,JavaScript,封装库--CSS选择器

元素的Javascript选择器/非CSS选择器[关闭]

querySelector