关于在button中的onclick事件调用写在页面中的JS函数的问题

筱吴赖 2012-03-16 11:59:46
最近在用ASP写一个页面 ,通过按钮调用一个写在页面内的JS函数,在IE6中无论如何都没有效果,然而在火狐中和SOGOU中都没有问题,也想过把JS代码写入一个文件,无奈JS代码和VBS代码是混合写的,不知道应该如何独立出来。

我的关键代码如下 ,在按钮查询中 添加onclick事件调用JS函数 findcl 并且传递 参数(参数是一个SELECT的当前值),然后函数查询数据库相应内容 写入第二个作为列表的select。

在以前写过的页面中也有过基本类似的做法,通过按钮的onclick来调用页面中的JS函数,也曾出现过相同的问题,但是最后不知道什么原因就好了。现在又遇到同样的问题,很是头疼。

这个问题似乎只在IE6中出现,而且网上说的标记charset根本没有任何效果 ,我JS函数写在网页中,应该不存在编码方式的问题吧。

我是特别新的新手,跪求高手给出解决方案。如果这个BUG解决不了,请给出一个合理的做法来实现这一功能,谢谢。

<script language ="javascript" type="text/javascript">
Cls = new Array();
<%
sqlc = "select 业务,材料 from dbo.[cxinfo] where 部门='"&bumen&"'"
set rsc = gz.execute(sqlc)
i = 0
do while not rsc.eof
%>
Cls[<%=i%>] =new Array("<%=rsc("业务")%>","<%=rsc("材料")%>");
<%
i = i + 1
rsc.movenext
Loop
rsc.close
set rsc = nothing
%>
function findcl(yewu){
var yewu = yewu;
var i;
document.form1.cl.length = 0 ;
for (i=0;i<Cls.length;i++){
if(Cls[i][0]==yewu){
document.form1.cl.options[document.form1.cl.length] = new Option(Cls[i][1],Cls[i][1]);
}
}
}

</script>
<td width="10%" align="center">
<input type="button" name="查询" id="查询" value="查询" onClick="findcl(document.form1.yw[document.form1.yw.selectedIndex].value)"/>
</td>
</tr>
</table>
<select name="cl" id="cl" size="20" style="width:100%; border:thick">

</select>
...全文
1678 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
筱吴赖 2012-03-16
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 skyi881209 的回复:]
看看是不是叫yw的select没给 value?没给value值是肯定无法调用的
[/Quote]

呃 。。真的是这样。
skyi881209 2012-03-16
  • 打赏
  • 举报
回复
看看是不是叫yw的select没给 value?没给value值是肯定无法调用的
h4nn1 2012-03-16
  • 打赏
  • 举报
回复
直接onclick = "alert(findcl)",看看是不是显示undefined,如果是的话,就是语法有误导致这一段代码没有正确加载,所以报找不到方法。

如果没问题,显示的是这个方法的内容,才是对的。

找不到方法的情况,你仔细看下script标签内是否有各种误输入,例如中文分号,括号没匹配等等,都可能导致脚本加载的时候中断(一般找不到方法都是这种情况)

还有,你可以在声明方法的地方function findcl(xx){xxx}上面一行加一句alert("");看看脚本是否正确的走到这一行。
这都是简单的调试方法,自己分析原因,跟代码,调试代码,最后得出结论才是最好的学习方式。
筱吴赖 2012-03-16
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 h4nn1 的回复:]
你在ie6环境看下document.form1.yw[document.form1.yw.selectedIndex].value的值对不对。
再看下findcl方法能不能取到(用alert(findcl)查看)

一步步的调试,分析无效果的原因,input[button]的onclick事件ie6显然是支持的,所以你就一步步跟踪脚本的走向就行了。
[/Quote]

function cxcl(yewu){
alert("函数调用成功!");
var y = yewu;
var i;
document.form1.cl.length = 0 ;
for (i=0;i<Cls.length;i++){
if(Cls[i][0]==y){
document.form1.cl.options[document.form1.cl.length] = new Option(Cls[i][1],Cls[i][1]);
}
}
}
我这么写就行了吧?
筱吴赖 2012-03-16
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 h4nn1 的回复:]
你在ie6环境看下document.form1.yw[document.form1.yw.selectedIndex].value的值对不对。
再看下findcl方法能不能取到(用alert(findcl)查看)

一步步的调试,分析无效果的原因,input[button]的onclick事件ie6显然是支持的,所以你就一步步跟踪脚本的走向就行了。
[/Quote]

作为一个新手 我表示对alert不太懂 不过我用火狐的fierbug调试 显然是提示findcl函数未定义 可是我在程序中之前也用了类似的方法来定义函数 只有这个不支持 在之前做过的页面中使用的一样的方法和函数 甚至连函数名都一样 不知道该如何解决这个问题
h4nn1 2012-03-16
  • 打赏
  • 举报
回复
你在ie6环境看下document.form1.yw[document.form1.yw.selectedIndex].value的值对不对。
再看下findcl方法能不能取到(用alert(findcl)查看)

一步步的调试,分析无效果的原因,input[button]的onclick事件ie6显然是支持的,所以你就一步步跟踪脚本的走向就行了。

87,914

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧