我正在学习JavaScript中的一些新概念。能帮我达到以下的效果吗?
Values1(this.getField("Text6"))是一个多行文本框
Values2(this.getField("Text7"))是一个多行文本框
结果(this.getField("Text8"))是1和Value2的乘积。
测试了下面的代码,通过使用foreach method.But只显示结果框中的值2,我不知道如何在其中执行乘法?
var values1 = this.getField("Text6").value.split('\r');
var values2 = this.getField("Text7").value.split('\r');
this.getField("Text8").value = "";
values2.forEach(element => this.getField("Text8").value +=(element+'\n'));
电流输出:
发布于 2022-05-18 20:42:05
getField
不是一个本机JavaScript函数。我将在下面的片段中定义它。
几点意见:
split('\r')
可能不是获得行的最佳方法,因为其中也可能有\n
字符。相反,我会用正则表达式([\d.]+
)来匹配数字。Number
函数应用于它们。+=
累积结果,不如用产品创建一个数组,然后将它们连接到多行文本中,分配(一次)给字段。
var getField = document.getElementById.bind(document);
var collect = id => (this.getField(id).value.match(/[\d.]+/g) || []).map(Number);
var values1 = collect("Text6");
var values2 = collect("Text7");
this.getField("Text8").value = values2.map((element, i) => element*values1[i]).join("\n");
textarea {
width: 5em;
height: 150px;
margin-right: 30px;
}
<textarea id=Text6>
1
2
3
4
</textarea>
<textarea id=Text7>
4
5
6
7
</textarea><textarea id=Text8></textarea>
发布于 2022-05-18 20:25:14
forEach
回调的第二个参数是数组索引。您可以使用它来索引到values1
中,这样就可以将它们相乘。
values2.forEach((element, index) =>
this.getField("Text8").value +=(element * values1[index] + '\n'));
https://stackoverflow.com/questions/72295486
复制相似问题