0

如果 param 的值是硬编码的,则代码可以正常工作,就好像该值是从输入字段中获取的一样,那么该函数getResults()不会显示结果(但警报显示该值已成功提供给param)。请指导。

<script type="text/javascript">

var nexturl ="";
var lastid ="";

$(document).ready(function() {

  //$("#search").keyup(function() {
    //$('#hit').click(function() {  

  //var param = $("#search").val(); 
 $("#search").keypress(function(e) {
    if(e.which == 13) {
    var param = $('#search').val();
        alert(param);

    }
});
  //$(document).ready(function() {
  //var param = "Facebook";
  if (param != "") {
    $("#status").show();
    var u = 'https://graph.facebook.com/search/?callback=&limit=25&q='+param;
    getResults(u);
  };


  $("#more").click(function () { 

    $("#status").show();
    $("#more").hide();  
    pageTracker._trackPageview('/?q=/more');
    var u = nexturl;
    getResults(u);
  });

//};
});
</script>

编辑:

<script type="text/javascript">

var nexturl ="";
var lastid ="";
var param;
$(document).ready(function() {

 $("#search").keypress(function(e) {
    var param = $('#search').val();
    if (param != "") {
        $("#status").show();
        var u = 'https://graph.facebook.com/search/?callback=&limit=25&q='+param;
        getResults(u);
        }
});
};


  $("#more").click(function () { 

    $("#status").show();
    $("#more").hide();  
    pageTracker._trackPageview('/?q=/more');
    var u = nexturl;
    getResults(u);
  });

});
</script>
4

2 回答 2

0

看看你的变量范围。var param是在函数中定义的.keypress,因此它的作用域是该函数的本地,它不能被下面的其他代码访问(它的作用域在 中(document).ready)。

还要考虑即使它具有全局范围,您的代码仍然无法工作,因为getResults()在加载时执行,并且该.keypress函数显然不会执行,直到按下一个键#search

您最好的选择可能是在之前定义它getResults()

var param = $('#search').val();
if (param != "") {
    $("#status").show();
    var u = 'https://graph.facebook.com/search/?callback=&limit=25&q='+param;
    getResults(u);
}
于 2013-03-01T19:11:12.580 回答
0

进一步思考(见评论)。

定义一个全局参数:

var param = "";

然后在你准备好的jQuery中,像这样为参数赋值..

param = somevalue;

不要在此范围内使用 var param。

于 2013-03-01T19:12:53.710 回答