描述你的问题
如下我是我写的代码;我想要实现的效果是,点击按钮时,每1秒钟给p下面的UL里添加一个LI元素节点;当达到10个LI时停止添加,但是我写出来的代码总是提示 “Uncaught ReferenceError: sih is not defined”。。。但我看网上那些写的定时器是可以直接调取函数名的呀。求大神帮我看一下我哪里写错了,并帮我改正最好;谢谢哈;
贴上相关代码
贴上报错信息
贴上相关截图
已经尝试过哪些方法仍然没解决(附上相关链接)
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
把你的
sih()函数定义放到window.onload里面,然后,在setInterval函数里,调用的时候,这样写setInterval(sih, 1000)setInterval函数的第一个参数可以为一个函数对象或一个用字符串表示的js代码段;但是使用字符串时,字符串表示的代码作用域处于最外层,也就是全局作用域下,那么sih变量就要在全局作用域下寻找,而在全局作用域下没有sih这个变量定义
修改方法,传入函数对象而非字符串
oinput_1.onclick 也放到 inload里去
把你setInterval传入的函数名后面的括号去掉
你的点击函数也要放在window.onload里面的
你的 sih() 是放在 onload 的 function 里边的,但是在 setInterval 引用时却是在它(作用域)外边的,所以要把 onclick 处理整体挪到 onload 的 function 里边去才行。
下面的可以:
因为当调用setInterval时传递字符串函数,它会从全局作用域window里查找相关函数,但你的函数定义在onload方法,访问不到,因此不管用。
window.onload = function(){
你的代码有两个地方要注意:
1,就是报错,找不到sin,这个按照@kikong说的思路解决即可
2,在解决报错后,你的代码和你要实现的需求不一致,点击按钮后会1s钟生成十行li,应修改sin函数不用for 循环处理,可以参考以下代码