javascript - 如何从 nodeList 获取元素?如何使用byTagname/ByClassName?

标签 javascript html css dom

看来我应该在使用 nodeType 之前注意它,否则会得到 Cannot read property '1' of null。出于这个原因,我越来越依赖于 document.querySelectorgetElementbyTagname/getElementsByClassName。如何从 getElementsBy* 获取元素并使用它

现在我用这个,它有效:

var my_el = document.querySelector("some_long_path >div > form > div.field-invalid > textarea");
my_el.value="Hey, I input this into a text area ! :D" ;

如何从 getElementsBy* 中获取元素? :

my_el = document.getElementsByName("emailform")[0][1]; //ERROR

我需要一个示例来说明如何遍历 getElementsBy 返回的节点列表?并获取一个元素来使用它。

Here is the form

最佳答案

NodeList 只不过是一个数组,尽管没有一些便利。您仍然可以使用数组表示法访问单个元素,尽管数组的 forEach 方法不可用(多年来没有检查过),因此您可以自己动手。

function byId(id,parent){return (parent == undefined ? document : parent).getElementById(id);}
function allByClass(className,parent){return (parent == undefined ? document : parent).getElementsByClassName(className);}
function allByTag(tagName,parent){return (parent == undefined ? document : parent).getElementsByTagName(tagName);}
function forEachNode(nodeList, func){for (var i=0, n=nodeList.length; i<n; i++) func(nodeList[i], i, nodeList); }

window.addEventListener('load', onDocLoaded, false);

function onDocLoaded(evt)
{
  var liElems = allByTag('li');
  
  liElems[0].innerText += " (1st)";
  liElems[1].innerText += " (2nd)";
  liElems[2].innerText += " (3rd)";
}
<ul>
  <li>First</li>
  <li>Second</li>
  <li>Third</li>
</ul>
  

关于javascript - 如何从 nodeList 获取元素?如何使用byTagname/ByClassName?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34572670/

相关文章:

javascript - 表单上的 Drupal 动态选择

javascript - 使用纯 javascript 更改第一行 tds 宽度

html - CSS - 不要在顶部制作线条

html - CSS3/HTML5 框架,专门用于布局

javascript - 将柯里化(Currying)函数从 Rails 传递到 JavaScript

javascript - 如何填写数组中不存在的边界之间的日期?

javascript - 单击元素重新启动 Glide.js

css - 我无法让 div 扩展到其父 div 的底部

javascript - 单击打开按钮后创建不必要的空间

html - IE6(及更早版本)中的 Nowrap 继承错误