简体   繁体   English

通过ClassName在DOM中查找referenceNode

[英]Find a referenceNode in DOM by ClassName

I am attempting to do a jquery .after in pure JS. 我正在尝试在纯JS中执行一个jquery .after

I have the following script that works for the first div where I append by getElementById but not the second where I am using getElementsByClassName 我有以下脚本适用于我通过getElementById追加的第一个div,但不适用于我正在使用getElementsByClassName的第二个div

JSFiddle 的jsfiddle

How can I successfully append by using the element's class? 如何使用元素的类成功附加?

HTML HTML

<div id="first-div">First Div - found by ID</div>
<br>
<div class="second-div">Second Div - found by ClassName</div>

JS JS

function insertAfter(referenceNode, newNode) {
    referenceNode.parentNode.insertBefore(newNode, referenceNode.nextSibling);
}

var element1 = document.createElement("div");
element1.className = 'row'
element1.innerHTML = 'Text to append to first div by ID';
var div1 = document.getElementById('first-div');
insertAfter(div1, element1);

var element2 = document.createElement("div");
element2.className = 'row'
element2.innerHTML = 'Text to append to second div by class';
var div2 = document.getElementsByClassName('second-div');
insertAfter(div2, element2);
var div2 = document.getElementsByClassName('second-div')[0];

getElementsByClassName返回一个可迭代的,因此您必须先说哪个[0]

getElementsByClassName returns all the elements of that class, therefore the correct way is to iterate through each item getElementsByClassName返回该类的所有元素,因此正确的方法是遍历每个项目

var element2 = document.createElement("div");
element2.className = 'row'
element2.innerHTML = 'Text to append to second div by class';
var div2 = document.getElementsByClassName("second-div");
for(var i = 0; i < div2.length; i++)
{
   insertAfter(div2.item(i), element2);
}
var div2 = document.getElementsByClassName('second-div');

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM