0

该程序应该是使用 php 和 javascript 进行的实时搜索...当您键入它时,它会在下面搜索。我最近才开始学习javascript,如果我的知识有限,请见谅......

$(document).ready(function () {
    $('#results').append('<p>Started</p>');
    var getText = (function () {
        return document.getElementById('year').value;
    });
    var text = getText;
    var getText1 = (function () {
        return document.getElementById('class').value;
    });
    var text1 = getText1;
    setInterval(function () {
        var newText = getText;
        var newText1 = getText1;
        var loading = "search.php?year=" + newText + "&class=" + newText1;
        $('#results').append(newText1);
        if (text !== newText || text1 !== newText1) {
            $('#results').load(loading);
            $('#results').append('somethinghappened');
        };
        text = newText;
        text1 = newText1;
    }, 100);
});

所以当我附加newText1时它工作正常,但是如果我尝试附加“加载”它会返回:

search.php?year=function () { return document.getElementById("year").value; }&class=function () { return document.getElementById("class").value; }

谁能解释这两种情况之间的区别是什么以及为什么会出现区别?以及如何修复它以使其加载正确的 URL

我搜索并发现:JavaScript:将匿名函数分配给变量时,未传递函数返回值,而是将函数作为字符串传递,但并不完全理解传递两个参数的含义,当我尝试这样做时类似的东西,它没有按预期工作......

任何帮助表示赞赏并提前感谢。

4

3 回答 3

0

简单地尝试

var getText = document.getElementById('year').value;
var getText1 = document.getElementById('class').value;

否则您将只有对该函数的引用

于 2012-05-09T12:50:11.507 回答
0

你不是在调用函数,你只是在引用它们。

要调用它们,您需要括号,例如getText(). 但是为什么在这种情况下让它们起作用呢?它们很短并且不带参数。如果您需要函数,请创建一个接受字符串 ID 的函数。

于 2012-05-09T12:50:27.093 回答
0
var newText = getText;
var newText1 = getText1;

您正在分配函数getTextgetText1变量,而不是执行它们并分配它们的返回值。试试这个:

var newText = getText();
var newText1 = getText1();

要不就:

var newText = document.getElementById('year').value;
var newText1 = document.getElementById('class').value;
于 2012-05-09T13:02:50.810 回答