JavaScript 多个循环

标签 javascript loops

我正在尝试获取 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">&nbsp;</td></tr>
      <tr><td id="display2">&nbsp;</td></tr>
      <tr><td id="display3">&nbsp;</td></tr>
      <tr><td id="display4">&nbsp;</td></tr>
   </table>
   <div id="display"></div>
   <button onclick="calcAlpha()">calculate</button>
</body>
</html>

有人可以帮我解决这个问题吗?我还是 Javascript 的初学者,我不明白如何将 i、j 和 k 放入循环中。 谢谢。

最佳答案

这是完整的答案:

代码存在三个主要问题。首先,i、j 和 k 是 var在此示例中具有特定的整数值。 "square + j"只是一个没有所需值的字符串(即 square1square2 等)。正如迈克尔所建议的,你应该输入“square”+j。

第二个问题是您的网页中运行的唯一函数是 calcAlpha() ,您可以在 onclick 中调用它事件button元素。 calcaAlpha()内你从来不打电话newSquare()newDisplay() ,所以他们永远不会执行。

第三个问题是 JavaScript 变量的命名空间或范围。 calcAlpha()内您无法访问变量 jk因为它们是在不封装 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/

相关文章:

javascript - 使用 Knockout 和复选框进行 ajax 调用时出现问题

python - 识别具有相同值的下一行并创建新列 pandas 数据框

JavaScript 2D 数组无法在 IE 中检索元素

javascript - 在 android 中通过 javaScript 更改 webView 字体系列

javascript - 过早退出 Qualtrics 中的循环和合并 block

java - 在 Java 中用流 api 替换多个 FOR 循环的最佳方法

javascript - 如何在 XSL 的 javascript for 循环中使用 less than 来工作?

python - if语句可以是变量吗?

javascript - 与 ascx 控件一起使用时无法运行 javascript

javascript - 使用 IndexOf() 过滤返回空白结果