gpt4 book ai didi

javascript动态添加多组文本框并将它们全部相乘

转载 作者:行者123 更新时间:2023-11-30 20:31:32 24 4
gpt4 key购买 nike

我正在尝试使我的文本框动态化并能够计算输入的值(长度*宽度)。因此,如果我按一次添加文本框并输入一组值,它应该计算一个面积,如果我按它 2 次并输入 2 组值,它应该返回 2 个计算面积。现在我什至无法计算任何值,我不确定为什么。有人可以帮我吗?谢谢!下面是我的代码

这是我的 html

<body>
<div id="wrapper">
<div id="field_div">
<input type="button" value="Add TextBox" onclick="add_field();">
</div>
</div>
<p><button onclick="calculate()">Calculate</button><br>
<p id="Result">
</body>

这是我的javascript

<script>
function add_field(){
var total_text=document.getElementsByClassName("input_text");
total_text=total_text.length+1;
document.getElementById("field_div").innerHTML=document.getElementById("field_div").innerHTML+"<p id='input_text"+total_text+"_wrapper'><input type='text' class='input_text' id='length"+total_text+"' placeholder='Length'><input type='text' class='input_text' id='width"+total_text+"' placeholder='Width'><input type='button' value='Remove' onclick=remove_field('input_text"+total_text+"');></p>";
}


function remove_field(id){
document.getElementById(id+"_wrapper").innerHTML="";
}

function calculate(){
var length = document.getElementById("Length").value;
var width = document.getElementById("Width").value;
var area = length*width;
document.getElementById("Result").innerHTML = area;
}


</script>

-------------------------------------------- - - - - 更新 - - - - - - - - - - - - - - - - - - - - - ----------

下面是工作代码,但它只能计算最后一对文本框


Javascript代码

function add_field(){
var total_text=document.getElementsByClassName("input_text");
total_text=total_text.length+1;

document.getElementById("field_div").innerHTML=document.getElementById("field_div").innerHTML+"<p id='input_text"+total_text+"_wrapper'><input type='text' class='input_text' id='length"+total_text+"' placeholder='Length'><input type='text' class='input_text' id='width"+total_text+"' placeholder='Width'><input type='button' value='Remove' onclick=remove_field('input_text"+total_text+"');></p>";
}

function remove_field(id){
document.getElementById(id+"_wrapper").innerHTML="";
}

function calculate(){
var inputs = document.querySelectorAll('input[type=text]');
for(var i = 0; i<inputs.length; ){
var length = inputs[i].value;
var width = inputs[i+1].value;
var area = length*width;
i = i + 2;
}
document.getElementById("Result").innerHTML += '<br>' + area;
}


html代码

<div id="wrapper">
<div id="field_div">
<input type="button" value="Add TextBox" onclick="add_field();">
</div>
</div>
<p><button onclick="calculate()">Calculate</button><br>
<p id="Result">

最佳答案

更改 innerHTML属性将强制重新创建元素。因此,输入框中不会有任何以前的值。

而不是使用 innerHTML您必须通过 appendChild() 附加元素保留输入值。你必须使用 createElement()创建元素。您可以使用 setAttribute() 为元素设置所有必需的属性。 .

工作代码示例:

function add_field(){
var total_text=document.getElementsByClassName('input_text');
total_text=total_text.length+1;
var p = document.createElement('p');
p.setAttribute('id', 'input_text'+total_text+'_wrapper');
var input1 = document.createElement('input');
input1.setAttribute('type', 'text');
input1.setAttribute('class', 'input_text');
input1.setAttribute('id', 'length'+total_text);
p.appendChild(input1);

var input2 = document.createElement('input');
input2.setAttribute('type', 'text');
input2.setAttribute('class', 'input_text');
input2.setAttribute('id', 'length'+total_text);
p.appendChild(input2);

var btn = document.createElement('input');
btn.setAttribute('type', 'button');
btn.setAttribute('value', 'Remove');
btn.setAttribute('onclick', 'remove_field("input_text'+total_text+'")');
p.appendChild(btn);

document.getElementById("field_div").appendChild(p);
}

function remove_field(id){
document.getElementById(id+'_wrapper').innerHTML = '';
}

function calculate(){
var answer = 0;
document.getElementById('Result').innerHTML = '';
var inputs = document.querySelectorAll('input[type=text]');
for(var i = 0; i<inputs.length; ){
var length = inputs[i].value;
var width = inputs[i+1].value;
var area = length*width;
i = i + 2;
document.getElementById('Result').innerHTML += 'Answer '+ ++answer +') ' + area + '<br>';
}
}
<div id="wrapper">
<div id="field_div">
<input type="button" value="Add TextBox" onclick="add_field();">
</div>
</div>
<p><button type="button" onclick="calculate()">Calculate</button></p>
<p id="Result"></p>

关于javascript动态添加多组文本框并将它们全部相乘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50287788/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com