我的网站上有一个搜索框。它工作正常,但当我添加我的网站视频页时突然停止工作。我一直收到一个错误说" Uncaught ReferenceError:搜索未定义"我似乎无法找到错误是什么
的header.php
<center>
<input type="text" id="searchbar" onkeydown="search()" style="width:60%;font-size:17px;font-weight:bold; height:40px; padding:0px 10px; margin:3px 0px 0px 0px; border-radius:15px;" placeholder="Search for People, Videos, #hashtags and Blogs..." value="<?php echo $search; ?>"/>
</center>
我的页脚:footer.php
function search(){
var keycode = (event.keyCode ? event.keyCode : event.which);
if(keycode == '13'){
var str = post = document.getElementById("searchbar").value;
if(str.indexOf("#") == 0){
var result = str.replace('#', '');
var result = result.replace(/ /g, '%20');
window.location.assign("http://www.daparadise.com/testing/daparadise2/search.php?type=hashtag&search=" + result);
}else if(str.indexOf("people named") == 0){
var result = str.replace('people named ', '');
var result = result.replace(/ /g, '%20');
window.location.assign("http://www.daparadise.com/testing/daparadise2/search.php?type=people&search=" + result);
}else if(str.indexOf("videos") == 0){
var result = str.replace('videos ', '');
var result = result.replace(/ /g, '%20');
window.location.assign("http://www.daparadise.com/testing/daparadise2/search.php?type=videos&search=" + result);
}else if(str.indexOf("blogs") == 0){
var result = str.replace('blogs ', '');
var result = result.replace(/ /g, '%20');
window.location.assign("http://www.daparadise.com/testing/daparadise2/search.php?type=blogs&search=" + result);
}else{
var result = result.replace(/ /g, '%20');
window.location.assign("http://www.daparadise.com/testing/daparadise2/search.php?type=web&search=" + result);
}
}
}
答案 0 :(得分:1)
它通常表示代码中存在某种形式的语法错误(在函数中或之前),这会阻止Javascript解释器达到函数的定义。然后&#34;未定义&#34;。
检查您的浏览器日志中是否存在Javascript错误,它应该指向罪魁祸首(这很可能不在上面的代码中)。
答案 1 :(得分:0)
如果我将您的代码复制到Sublime Text文档中,请保存并在Chrome中打开HTML ...浏览器会引用最终else
子句的声明和报告的行号:
Uncaught TypeError: Cannot read property 'replace' of undefined
这与此任务相对应:
else {
var result = result.replace(/ /g, '%20');
/* etc. */
如果您的所有if
条件都失败,那就是默认操作......并且它无法在自己的初始值定义中引用自身 - 它尚未定义。
在输入var result
语句序列之前声明if/else
,并事先给它一个默认值(当然,因为你正在使用String.replace
,所以最好是一个字符串)。它可以很简单:
if(keycode === '13') {
var result = '';
var str = /* etc, etc. */