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; }

2つのケースの違いと、なぜ違いが生じるのか、誰でも説明できますか? 正しい URL をロードするように修正する方法

私は検索して見つけました: JavaScript:無名関数を変数に割り当てる場合、関数の戻り値は渡されませんが、文字列としての関数は2つの引数を渡すことの意味を完全には理解していませんでした。似たようなもので、期待どおりに機能しませんでした...

どんな助けでも大歓迎です、そして前もって感謝します。

4

3 に答える 3

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 に答える
0

で簡単に試してください

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

そうしないと、関数への参照しかありません

于 2012-05-09T12:50:11.507 に答える
0

関数を呼び出しているのではなく、参照しているだけです。

それらを呼び出すには、のような括弧が必要ですgetText()。しかし、この場合、なぜそれらを機能させるのでしょうか? それらは短く、パラメーターを取りません。関数が必要な場合は、文字列 ID を受け取る関数を 1 つ作成します。

于 2012-05-09T12:50:27.093 に答える