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