看起来我应该在使用之前注意nodeType或者生成Cannot read property '1' of null
。出于这个原因,我开始更多地依赖document.querySelector
vs getElementbyTagname
/ 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返回的节点列表的示例?并获得一个元素来使用它。
答案 0 :(得分:0)
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)";
}
&#13;
<ul>
<li>First</li>
<li>Second</li>
<li>Third</li>
</ul>
&#13;