如何用Javascript实现带倒计时的随机文本生成器?返回undefined如何解决
问题根因
你编写的create_random_string函数在拼接完成随机字符串后,没有显式声明返回值,JavaScript中所有没有写return语句的函数,执行后默认返回undefined,这就是你没有拿到预期随机文本的直接原因。
修复方案
只需要做一处修改:在create_random_string函数的末尾添加return random_string;语句,将生成好的随机字符串返回即可。另外你代码中for循环的变量声明写法存在冗余,也可以同步优化。
修复后完整代码
<button id="btn" style="background-color:red;width:30px;height:30px;"></button> <script> var timer = 5; var id; function create_random_string(string_length){ var random_string = 'X-'; var characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890' // 优化了for循环的变量声明写法 for (var i = 0; i < string_length; i++){ random_string += characters.charAt(Math.floor(Math.random() * characters.length)) } // 添加return语句返回生成的字符串 return random_string; } function starButton() { this.style.display = 'none'; id = setInterval(function () { timer--; if (timer <= 0) { clearInterval(id); document.getElementById("script").innerHTML = create_random_string(5); } else { document.getElementById("script").innerHTML = timer + " seconds to get Code"; } }, 1000); }; var clickbtn = document.getElementById("btn"); clickbtn.onclick = starButton; </script> <div id="script"></div>
内容的提问来源于stack exchange,提问作者Tom DLonge Wancakan
相关产品推荐
相关产品推荐

