我正在尝试获取 HTML 浏览器中显示的单词列表的总和。
如果每个单词都分配了一个数字,即
a is 1, b is 2
依此类推,直到z为26,那么apple的总和应该为50。我希望它们在浏览器中显示如下:
apple
carrot
money
50
75
72
但我无法让循环正常工作。
<!DOCTYPE html>
<html>
<head>
<title></title>
<link rel="stylesheet" rev="stylesheet" href="script.css" />
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script type="text/javascript">
function newSquare(){
for(var j=0; j<10; j++){
calcAlpha(j);
}
}
function newDisplay(){
for(var k=0; k<10; k++){
calcAlpha(k);
}
}
function calcAlpha() {
var word = document.getElementById("square + j").childNodes[0].data;
var sum = 0;
for(var i=word.length-1; i>=0; i--) {
sum += (word.charCodeAt(i) - 96);
}
document.getElementById("display + k").innerHTML=sum
}
</script>
</head>
<body>
<h1>Calculate sum of words</h1>
<table>
<tr><td id="square1">apple</td></tr>
<tr><td id="square2">carrot</td></tr>
<tr><td id="square3">money</td></tr>
<tr><td id="square4">game</td></tr>
</table>
<table>
<tr><td id="display1"> </td></tr>
<tr><td id="display2"> </td></tr>
<tr><td id="display3"> </td></tr>
<tr><td id="display4"> </td></tr>
</table>
<div id="display"></div>
<button onclick="calcAlpha()">calculate</button>
</body>
</html>
有人可以帮我解决这个问题吗?我还是 Javascript 的初学者,我不明白如何将 i、j 和 k 放入循环中。 谢谢。
最佳答案
这是完整的答案:
代码存在三个主要问题。首先,i、j 和 k 是 var
在此示例中具有特定的整数值。 "square + j"
只是一个没有所需值的字符串(即 square1
、 square2
等)。正如迈克尔所建议的,你应该输入“square”+j。
第二个问题是您的网页中运行的唯一函数是 calcAlpha()
,您可以在 onclick
中调用它事件button
元素。 calcaAlpha()
内你从来不打电话newSquare()
或newDisplay()
,所以他们永远不会执行。
第三个问题是 JavaScript 变量的命名空间或范围。 calcAlpha()
内您无法访问变量 j
或k
因为它们是在不封装 calcAlpha()
的外部函数中声明的功能。但是,您可以访问变量 i
因为它是在 calcAlpha()
中声明的。
解决您的问题的方法是删除 newDisplay()
和newSquare()
并更改calcAlpha()
像这样的事情:
function calcAlpha() {
for (var j = 1; j <= 4; j++) {
var word = document.getElementById("square" + j).childNodes[0].data;
var sum = 0;
for(var i=word.length-1; i>=0; i--) {
sum += (word.charCodeAt(i) - 96);
}
document.getElementById("display" + j).innerHTML=sum
}
}
这基本上是 newSquare()
的组合代码和newDisplay()
放入 calcAlpha()
并修复了上述其他问题。请注意变量 k
是不必要的,因为您想要输入 squareN
的数字总和进入displayN
,因此您可以使用单个变量 j
。
关于JavaScript 多个循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11782837/