js找不到控件,js高手请进
<head>
<script language="javascript" type="text/javascript">
var result = "<%=GetArray() %>";
var objInput = document.getElementById("product_model");
if (objInput == null) {
alert("找不到文本框!");
}
</script>
</head>
问题1: var result = "<%=GetArray() %>";此句不放入js文件,写在html代码中可获得值,放入js文件中result的值就是<%=GetArray() %>
问题2: 会弹出"找不到文本框"!
此问题我用了按钮检测文本框是否为空测试
function check_input1() {
var ctl = document.getElementById("product_model");
if (ctl == null) {
alert("找不到文本框!!!!");
return;
}
if (ctl.value.length == 0) {
alert("请输入产品型号!");
return false;
}
}
//check_input1();
按钮的click事件调用check_input1方法没问题,但假如我取消注释//check_input1();会报错找不到文本框!!!
求解!!!!!!
------解决方案--------------------
问题1:<%...%>语法是服务器脚本语法,只能在对应的脚本文件(如.asp,.aspx,.jsp,.php等)中被解析。在.js文件中不会对它进行解析,只会把它当作字符串的一部分。
问题2:Html流的执行方向是自上而下,LZ的脚本放在Head标签里,即在Body加载之前。脚本运行时Body里所有的控件都还没加载,当然找不到了。(如果把这段脚本放到要找的文本框后面就可以找到了)
HTML code
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>abc</title>
<!--
<script type="text/javascript">
// 放这里会弹出Error!
var obj = document.getElementById("product_model");
if (obj)
alert("OK!");
else
alert("Error!");
</script>
-->
</head>
<body>
<input type="text" id="product_model" />
<script type="text/javascript">
// 放这里会弹出OK!
var obj = document.getElementById("product_model");
if (obj)
alert("OK!");
else
alert("Error!");
</script>
</body>
</html>
------解决方案--------------------
你在控件没加载呢,就调用,当然找不到了,你可以把你的js放在控件出现的后面,只要后面就行,不一定要在body结束地方.
当然放在head里面,扔到onload事件也可以.
至于你说的单击事件里可以,直接放那里不行:
原因:事件就绪时,文档所有元素都已经就绪了.