如何通过html集合创建的数组中的for循环从对象中获取元素的值?

时间:2019-01-19 00:29:41

标签: javascript html

我有几个具有相同类名的div,其中有许多元素需要从中获取值(例如数字)来检查与另一个值的相等性,但是我的方法行不通。

首先,我得到了我想要的所有div的html集合。 我将html集合转换为数组,因此可以对其进行迭代。

var divCol = document.getElementsByClassName("test");
var arr = Array.prototype.slice.call( divCol );

for (var i = 0, len = arr.length; i < len; i++) {
    var again=arr[i];
    var pSize=again[i].getElementsByClassName("product_size").value;
    alert (pSize);
    [...]
            }

为了测试div在索引i的“ product_size”段中存储的内容,我在pSize上使用了一个警报,但提示pSize未定义。

1 个答案:

答案 0 :(得分:1)

jsfiddle

假设您具有与此类似的HTML:

<div class="test"><p class="product_size">Lorem Ipsum 1</p></div>
<div class="test"><p class="product_size">Lorem Ipsum 2</p></div>
<div class="test"><p class="product_size">Lorem Ipsum 3</p></div>
<div class="test"><p class="product_size">Lorem Ipsum 4</p></div>

您可以执行以下操作:

let divCol = document.getElementsByClassName('test');
let arr = Array.prototype.slice.call(divCol);

for (let i = 0; i < arr.length; i++) {
    console.log(arr[i].firstChild.textContent);
}

在每个div元素(将是一个段落)中定位第一个子对象,然后在该文本的textContent中抓住该段落文本。

控制台输出:

Lorem Ipsum 1
Lorem Ipsum 2
Lorem Ipsum 3
Lorem Ipsum 4

Get paragraph text inside an element
nodeValue vs innerHTML and textContent. How to choose?