我刚刚开始使用JavaScript和Jquery,并遇到了障碍。我希望用户能够添加&减去框并用输入填充。这是我的HTML
<body>
<h1>Math Grades</h1>
<div id="mathGrades">
<input style="height:50px; width:50px; font-size:16pt; text-align: center" type='number' id="fooBar">
<input style="height:50px; width:50px; font-size:16pt; text-align: center" type='number' id="fooBar">
</div>
<button type="button" id="addBox">+</button>
<button type="button" id="subtractBox">-</button>
<br>
<button type="button" id="getGrades">Submit Grades</button>
<script src="calcjq.js"></script>
这是我的代码:
$(document).ready(function() {
var addMathBox = document.getElementById("addBox");
addMathBox.addEventListener('click', addBox, false);
var subtractMathBox = document.getElementById("subtractBox");
subtractMathBox.addEventListener('click', subtractBox, false);
var getScores = document.getElementById("getGrades");
getScores.addEventListener('click', getUserGrades, false);
function getUserGrades(){
var userGrades = document.getElementById("fooBar").value;
console.log(userGrades);
}
function subtractBox(){
$('#fooBar').remove()
}
function addBox(){
$('#mathGrades').append('<input style="height:50px; width:50px; font-size:16pt; text-align: center" type="number" id="fooBar">')
};
});
如何确保收集所有输入而不知道他们将添加和填充多少个框?
修改
终于找到了一种方法:
var mathGrades = $("input[class='mathGrades']")
.map(function(){return parseInt($(this).val(), 10);}).get();
答案 0 :(得分:0)
首先,您可能知道这一点,但我想以任何方式指出它,您的id属性对于每个元素应该是唯一的。因此,请确保它们并非对所有人都有效。
你可以做些什么来解决你的问题是为每个输入添加一个唯一的类,即mathGrades,然后使用以下代码收集所有数据并随意使用它。
var mathGrades = document.getElementsByClassName('mathGrades');
var m, v;
for(m in mathGrades) {
v = $(mathGrades[m]).val(); // takes value and converts to string i.e. "1"
$(mathGrades[m]).val(v+1); // assigns new value "1" + "1" = "11"
}
在您的javascript中,您可以将addBox函数更改为:
function addBox() {
$('#mathGrades').append('<input style="height:50px; width:50px; font-size:16pt; text-align: center" type="number" class="mathGrades">')
};