为什么没有定义搜索?

时间:2014-07-01 23:11:11

标签: javascript php keydown

我的网站上有一个搜索框。它工作正常,但当我添加我的网站视频页时突然停止工作。我一直收到一个错误说" 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);
        }
    }
}

2 个答案:

答案 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. */