求助:无法获取属性“match”的值: 对象为 null 或未定义

js实现本地搜索。随意搜索后报错。求助解决办法。<metacharset=utf-8/><inputid="key-word"class="key-word"value=... js实现本地搜索。随意搜索后报错。求助解决办法。

<meta charset=utf-8 />
<input id="key-word" class="key-word" value="请输入搜索内容" />
<button id="search-button">搜索</button>
<ol>
<div id="content" >
</div></ol>
<script>
var ti
ti="我们是一个人123||||你们是几个人456||||他们说什么话789";
tiz=ti.split('||||');

function $(id){
return document.getElementById(id)
}
var putWordsObj = $('key-word');
putWordsObj.onfocus = function(){
if(this.value == '请输入搜索内容')this.value='';
}
putWordsObj.onblur = function(){
if(!this.value)this.value='请输入搜索内容';
}
//search
$('search-button').onclick = function(){
$('content').innerHTML = "";
for(var i=0;i<ti.length;i++){
var content = tiz[i]; //$('content'+i).innerHTML;
var keyWord = $('key-word').value;
content=search_do(content, keyWord);
}
}
function search_do(content,keyWord){
var rr;
var keyWordArr = keyWord.replace(/[\s]+/g,' ').split(' ');
var re;var r;var hh=1;
for(var n = 0; n < keyWordArr.length; n ++) {
//re = new RegExp(">[\s\S]*?"+keyWordArr[n]+"[\s\S]*?<\S","gmi");
re = new RegExp(""+keyWordArr[n]+"","gmi");
r=0;
r = content.match(re);
if(r == null){
rr = null;
}else{
content = content.replace(re,'<span style="color:red;">'+keyWordArr[n]+'</span>');
rr=0;
}
}
if(rr != null){
$('content').innerHTML += "<li>"+content+"</li>";
}
}
</script>

网页错误详细信息
用户代理: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0)
时间戳: Wed, 13 Nov 2013 12:08:47 UTC

消息: 无法获取属性“match”的值: 对象为 null 或未定义
行: 43
字符: 2
代码: 0
URI: file:///C:/Users/Administrator/Desktop/dd.html
展开
 我来答
CookiQeen
推荐于2017-12-15 · 超过17用户采纳过TA的回答
知道答主
回答量:44
采纳率:0%
帮助的人:45.2万
展开全部
for(var i=0;i<ti.length;i++){
var content = tiz[i]; //$('content'+i).innerHTML;
var keyWord = $('key-word').value;
content=search_do(content, keyWord);
}

这个循环的问题, i的取值范围是ti 字符串的长度,而并不是tiz 数组的长度。超出数组长度的content都为null, 调用search_do(content,keyWord)时出现的现象。改成
for(var i=0;i<tiz.length;i++) 就好了
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-11-13
展开全部
var content = tiz[i];

不是tiz吧,是ti是吧
追问
是tiz
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
台北失心
2013-11-13 · TA获得超过806个赞
知道小有建树答主
回答量:284
采纳率:0%
帮助的人:189万
展开全部
re = new RegExp(""+keyWordArr[n]+"","gmi");
//keyWordArr[n] 有值吗?
追问
有的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式