2014-07-01 79 views
-3

我的网站上有一个搜索框。它工作正常,但突然停止工作,当我添加我的网站视频页面。我不断收到一个错误说“未捕获的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); 
     } 
    } 
} 
+1

关于你的编码风格的一些事情 - 在函数的顶部声明你的变量只有一次;使用===与0比较;不要声明你永远不会使用的变量(在这种情况下变量post);正确使用正则表达式/ \ s /而不是/ /,如果一切都失败,最后会有一个默认情况,就像你的情况一样。 – hex494D49

回答

1

这通常表示在您的代码中(在函数中或在它之前)存在某种形式的语法错误,这会阻止Javascript解释器达不到函数的定义。这是“未定义”。

检查您的浏览器日志中的Javascript错误,它应该指向罪魁祸首(这很可能不在上面的代码中)。

+0

非常感谢!我查看了开发人员区域,发现我的javascript在我的搜索功能中有错误。它现在工作正常! :) – Zacharysr

0

如果我是你的代码复制到一个崇高的文本文档,保存并在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. */ 
+0

这不是问题。 – Popnoodles