点击按钮报Uncaught ReferenceError: findnembers未定义问题
错误原因
你遇到的ReferenceError: findnembers is not defined报错不是函数名拼写错误,而是script标签内部存在语法错误,导致整个脚本块解析失败,findnembers函数没有被成功注册到全局作用域,点击按钮调用时自然找不到该函数。
具体存在的问题如下:
- 语法错误1:
findnembers函数内拼接print变量时,<p>标签没有用引号包裹,属于非法的JavaScript语法,直接打断了整个脚本的解析 - 语法错误2:字符串和
counter变量拼接的写法错误,普通字符串中不能直接用{counter}插入变量,需要用模板字符串或者+运算符拼接 - 逻辑错误:
</ol>闭合标签的拼接写在了for循环内部,会导致每循环一次就插入一次闭合标签,最终渲染的列表结构完全混乱 - 优化点:
sumdigits函数内的sum变量没有声明,会默认成为全局变量,最好补充声明
修复后的完整代码
<html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>project3</title> </head> <body dir="ltr"> <button id="click here to calculate" onclick="findnembers();" type=button>click here to calculate </button> <div id='rslt' style='text-align: center;font-size: 1em; font-weight: bolder;' value=""></div> <script> function sumdigits(num) { let sum = 0; // 补充sum变量声明 while (num) { sum += num % 10; num = Math.floor(num / 10); } return sum; } function findnembers() { var counter = 0; var list='<ol>'; for (let i = 0; i < 9999; i++) { var ezer = sumdigits(i); if (ezer === 9) { list+= "<li>" + i + "</li>"; counter++; } } list += "</ol>"; // 闭合标签移到循环外部 // 用模板字符串拼接后续内容,修复语法错误 var print=list + `<p style='text-align: center;font-size: 1em; font-weight: bolder;'>The sum of digits of those number is 9, and they are in the range 0 to 9999 inclusive and their quantity is ${counter}</p>`; document.getElementById("rslt").innerHTML=print; } </script> </body> </html>
内容的提问来源于stack exchange,提问作者liri_ roz
相关产品推荐
相关产品推荐

