JS 在<form></form>标签中无法执行。去掉 <form></form>就可以,求大神而指出问题在哪

<%@pagelanguage="java"pageEncoding="UTF-8"contentType="text/html;charset=UTF-8"%><!DO... <%@ page language="java" pageEncoding="UTF-8" contentType="text/html;charset=UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>自动计算</title>
<script>
function sum(obj) {
var a = document.getElementById("a");
var b = document.getElementById("b");
var s = document.getElementById("sum");
if(a.value === "" || b.value === "") {
return;
}
s.value = parseFloat(a.value) * parseFloat(b.value);
}
</script>
</head>
<body>
<form action="" method="post">
<input type="text" id="a" onkeyup="sum(this);" />
<input type="text" id="b" onkeyup="sum(this);" />
<input type="text" id="sum" />
</form>
</body>
</html>
展开
 我来答
润泽且素淡灬瑰宝h
推荐于2016-09-10 · TA获得超过1.1万个赞
知道大有可为答主
回答量:3561
采纳率:3%
帮助的人:1875万
展开全部

不是说js在form里面不能运行,一样是可以运行的。

只是说你在form里面写js的时候,也需要加上标签:<script type="text/javascript">才行的。

如图:

追问
你可以用我提供这段代码测试,去掉 标签立马就可以了。 你说的我也做了还是不行。
追答
我找到问题所在了。这个问题还真是不好发现。
原因是这样的:
因为你的form标签里面有一个ID是叫sum的。由于作用域的关系,同在form下,你调用sum方法的时候就会默认从最接近当前的标签去找sum方法,然后找到一个id是sum的。然后就停下了。
你把上面的sum方法名换一下就好了。
ps:这个问题是让人d疼的问题。你自己写方法名的时候要注意不要用系统关键字,注意名字的区分。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式