javascript - 将元素的值推送到对象数组
问题描述
我试图将一个元素的值推送到一个对象数组中,但我所做的只是为所有其他元素返回第一个元素内部 Html。我正在使用的代码附件。我实际上应该得到每个元素。它适用于所有参赛者。然后我应该可以推到上面的空对象,以保持所有参赛者的得分超出固定值。像显示对象 = {contestant_one: 5,...}
var total = document.querySelector(".Fixed_number");
var minusBtn = document.querySelectorAll("#minus");
var plusBtn = document.querySelectorAll("#plus");
var GetTotal = document.getElementById('get_all');
var value1 = document.getElementById('Contestant_One');
var value2 = document.getElementById('Contestant_Two');
var value3 = document.getElementById('Contestant_Three');
var value4 = document.getElementById('Contestant_Four');
plusBtn.forEach(function(item) {
item.onclick = function() {
if (parseInt(total.innerText) > 0) {
item.nextElementSibling.innerText = parseInt(item.nextElementSibling.innerText) + 1;
total.innerText = parseInt(total.innerText) - 1;
if (parseInt(total.innerText) == 0) {
const countries = document.querySelectorAll('.country');
const result = [];
for (const country of countries) {
let resEl = {};
[...country.querySelectorAll('span[class^="Contestant-"]')].forEach((span) => resEl[span.className.split('-')[1]] = value1.innerHTML)
result.push(resEl);
}
console.log(result)
}
}
};
});
minusBtn.forEach(function(item) {
item.onclick = function() {
if (parseInt(item.previousElementSibling.innerText) > 0) {
item.previousElementSibling.innerText = parseInt(item.previousElementSibling.innerText) - 1;
total.innerText = parseInt(total.innerText) + 1;
}
};
});
/*My Console.log(result) output suppose to be something like
0: {one: "3"}
1: {two: "2"}
2: {three: "2"}
3: {four: "6"}
length: 4
but it's only using the first value for other objects so it's returning something like
0: {one: "9"}
1: {two: "9"}
2: {three: "9"}
3: {four: "9"}
length: 4
*/
<body>
<div class="Fixed_number">10</div>
<ul class="countries">
<form>
<label for=""> Contestant_One
<div id="" class="country">
<button id="plus" type="button">+</button>
<span id="Contestant_One" class="Contestant-one">0</span>
<button id="minus" type="button">-</button>
</div>
</label>
</form>
<form>
<label for=""> Contestant_Two
<div id="" class="country">
<button id="plus" type="button">+</button>
<span id="Contestant_Two" class="Contestant-two">0</span>
<button id="minus" type="button">-</button>
</div>
</label>
</form>
<form>
<label for="" class="country"> Contestant_Three
<div id="">
<button id="plus" type="button">+</button>
<span id="Contestant_Three" class="Contestant-three">0</span>
<button id="minus" type="button">-</button>
</div>
</label>
</form>
<form>
<label for="">Contestant_Four
<div id="" class="country">
<button id="plus" type="button">+</button>
<span id="Contestant_Four" class="Contestant-four">0</span>
<button id="minus" type="button">-</button>
</div>
</label>
</form>
</ul>
<div id="all_total">
<button id="get_all" type="submit">Get Totals</button>
</div>
<script type="text/javascript" src="app.js"></script>
</body>
解决方案
[...country.querySelectorAll('span[class^="Contestant-"]')].forEach((span) => resEl[span.className.split('-')[1]] = value1.innerHTML)
你硬编码value1
,它应该是动态的,如:
[...country.querySelectorAll('span[class^="Contestant-"]')].forEach((span) => resEl[span.className.split('-')[1]] = document.getElementById(span.id).innerHTML)
推荐阅读
- mysql - 加入多个唯一键表,但只返回一行
- httpclient - 从 HTTP 响应中提取数据 - Angular 5
- xamarin.ios - 如何将 IReadonlyReactiveList 绑定到 ReactiveCollectionView
- javascript - NodeJS Express - 返回它触发的 URL 路径的 JSON 文件
- ios - 如何以编程方式将视图控制器添加到窗口并将其置于前面
- javascript - 无法写入内容:无法延迟初始化角色集合,无法初始化代理 - 无会话
- excel - 403 禁止在 OneDrive 中读取 CSV 文件
- java - Apache Spark :org.apache.spark.sql.Dataset.drop(String... colNames) 方法用于 Java
- android - 选择 DatePickerDialog 时,对话框 onCreateDialog 显示错误
- php - Drupal 8.5.1 升级错误 - 在哪里寻找故障排除?