我有HTML文件:
<div class="um-field-area">
<div class="um-field-value">Value1</div>
</div>
<div class="um-field-area">
<div class="um-field-value">Value2</div>
</div>
<div class="um-field-area">
<div class="um-field-value">Value3</div>
</div>
<div class="um-field-area">
<div class="um-field-value">Value4</div>
</div>
<button onclick="Function()">Whatever</button>
<div id="result"></div>
我希望函数使用“ um-field-value”类的所有四个div取值
<div class="um-field-value">Value1</div>
然后将它们放在Div的“结果”中
本质上,我希望脚本简单地复制um-field-value类中给定的值并将其粘贴到“结果” div中。我尝试了以下操作:
function Function() {
var x = document.getElementsByClassName("um-field-value");
document.getElementsById('result').innerHTML = x;
}
但这根本不起作用。
我对编码有些陌生,所以我不确定是否可以编码。 Google搜索了一个多小时,但找不到任何解决方案。
答案 0 :(得分:0)
document.getElementsByClassName
本身就是HTML节点,但是您必须从HTML节点中提取值,将它们组合起来,然后将其设置为结果div
。下面的示例片段:
function myFunction() {
var valueNodes = Array.prototype.slice.call(document.getElementsByClassName("um-field-value"));
var values = valueNodes.map(valueNode => valueNode.innerHTML);
var result = values.join(' ');
document.getElementById('result').innerHTML = result;
}
<div class="um-field-area">
<div class="um-field-value">Value1</div>
</div>
<div class="um-field-area">
<div class="um-field-value">Value2</div>
</div>
<div class="um-field-area">
<div class="um-field-value">Value3</div>
</div>
<div class="um-field-area">
<div class="um-field-value">Value4</div>
</div>
<button onclick="myFunction()">Whatever</button>
<div id="result"></div>
答案 1 :(得分:0)
使用querySelectorAll
获取具有此类um-field-value
的所有dom,然后对其进行迭代以获取innerHTML
您的代码中有一个错字。它是getElementById
而不是getElementsById
。还有一个额外的s
function Function() {
var x = document.querySelectorAll(".um-field-value");
let result = '';
for (var y = 0; y < x.length; y++) {
result += x[y].innerHTML;
}
document.getElementById('result').innerHTML = result;
}
<div class="um-field-area">
<div class="um-field-value">Value1</div>
</div>
<div class="um-field-area">
<div class="um-field-value">Value2</div>
</div>
<div class="um-field-area">
<div class="um-field-value">Value3</div>
</div>
<div class="um-field-area">
<div class="um-field-value">Value4</div>
</div>
<button onclick="Function()">Whatever</button>
<div id="result"></div>
答案 2 :(得分:0)
您处在正确的轨道上。 document.getElementsByClassName
将返回NodeList
。您需要为该列表中的每个元素获取innerText
。根据浏览器的不同,您可以使用forEach
或常规for
循环遍历列表。
function Function() {
var fieldsList = document.getElementsByClassName("um-field-value");
var fieldValues = [];
fieldsList.forEach(function(field) { fieldValues.push(field.innerText) });
document.getElementsById('result').innerHTML = fieldValues.join(", ");
}
答案 3 :(得分:0)
这是一个简单易读的解决方案,它使用循环在每个元素内获取文本并将其添加到字符串中。 getElementsByClassName
返回找到的所有元素的数组,因此需要循环才能使用textContent
在每个元素内获取文本。
function Function() {
var result = '';
var fields = document.getElementsByClassName("um-field-value");
for (var i=0; i<fields.length; i++) {
result += fields[i].textContent + '\n';
}
document.getElementById('result').innerHTML = result;
}
<div class="um-field-area">
<div class="um-field-value">Value1</div>
</div>
<div class="um-field-area">
<div class="um-field-value">Value2</div>
</div>
<div class="um-field-area">
<div class="um-field-value">Value3</div>
</div>
<div class="um-field-area">
<div class="um-field-value">Value4</div>
</div>
<button onclick="Function()">Whatever</button>
<div id="result"></div>