下面的代码中,为什么把var s = document.getElementById("t").value.split(",");放在rep()函数外面就会报nul引用的错误啊,求解释,谢谢啦<!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>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>google</title>
</head>
<style type="text/css">
#div{
border:1px solid black;
width:650px;
height:300px;
margin:10px auto;
font-size:12px;
}
#div1{
text-indent:200px;
margin:10px auto;
}
#div3 a{
font-size:12px;
}
</style>
<script type="text/javascript">
function rep(){
var s = document.getElementById("t").value.split(",");
for(var i = 0; i < s.length; i++){
document.getElementById("div3").innerHTML = document.getElementById("div3").innerHTML.replace(new RegExp(s[i],"gi"),s[i].fontcolor("red"));
}
}
</script>
<body>
<div id="div">
<div id="div1"><input id="t" type="text"/> <input type="button" id="btn" value="搜索" onclick="rep()"/><br /></div>
<hr />
<div id="div3">
<a href="#">多普达通讯有限公司</a><br /><br />
生产和提供多普达智能手机产品,及其配件信息<br /><br />
</div>
</div>
</body>
</html>JavaScript
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>google</title>
</head>
<style type="text/css">
#div{
border:1px solid black;
width:650px;
height:300px;
margin:10px auto;
font-size:12px;
}
#div1{
text-indent:200px;
margin:10px auto;
}
#div3 a{
font-size:12px;
}
</style>
<script type="text/javascript">
function rep(){
var s = document.getElementById("t").value.split(",");
for(var i = 0; i < s.length; i++){
document.getElementById("div3").innerHTML = document.getElementById("div3").innerHTML.replace(new RegExp(s[i],"gi"),s[i].fontcolor("red"));
}
}
</script>
<body>
<div id="div">
<div id="div1"><input id="t" type="text"/> <input type="button" id="btn" value="搜索" onclick="rep()"/><br /></div>
<hr />
<div id="div3">
<a href="#">多普达通讯有限公司</a><br /><br />
生产和提供多普达智能手机产品,及其配件信息<br /><br />
</div>
</div>
</body>
</html>JavaScript
i < s.length,S就空了,s.length当然就没有值了,
程序就会报错了
+1浏览器加载顺序问题,找不到id为t的,当然就是null了。
var s = document.getElementById("t").value.split(",");
function rep(){
for(var i = 0; i < s.length; i++){
document.getElementById("div3").innerHTML = document.getElementById("div3").innerHTML.replace(new RegExp(s[i],"gi"),s[i].fontcolor("red"));
}
}是这一行报的错
var s = document.getElementById("t").value.split(",");报的是无法获取未定义或null引用的属性“value”,要是按前辈说的话应该报错在for循环那一行才对啊,好像是浏览器的解析顺序问题,谢谢了
var s = document.getElementById("t").value.split(",");
function rep(){
for(var i = 0; i < s.length; i++){
document.getElementById("div3").innerHTML = document.getElementById("div3").innerHTML.replace(new RegExp(s[i],"gi"),s[i].fontcolor("red"));
}
}是这一行报的错
var s = document.getElementById("t").value.split(",");报的是无法获取未定义或null引用的属性“value”,要是按前辈说的话应该报错在for循环那一行才对啊,好像是浏览器的解析顺序问题,谢谢了
是的。
解决的方法是把<script>标签和程序放在 </div> </body>之间。
或者位置不变程序部分改成window.onload=function(){
}
这个只要了解浏览器的解析和执行的顺序就不会出错了。
不过,你的这行
var s = document.getElementById("t").value.split(",");
应该放在事件函数中, 不然无法取到用户输入的值,只能取得文本框初始设置的value,