web-dev-qa-db-ja.com

jQuery valは未定義ですか?

私はこのコードを持っています:

_<input type="hidden" id="editorTitle" name="title" value="home">
<textarea name="text" id="editorText"></textarea>
_

しかし、$('#editorTitle').val()$('#editorText').html()を書くとき、$('#editorTitle').val()は 'undefined'で、$('#editorText').html()は空ですか?

なにが問題ですか?


編集:

完全なコードは次のとおりです。

_function openEditor() {
    $("#editor").show().animate({ width: 965, height: 380 }, 1500);
    $("#editor textarea").show();
}

function closeEditor() {
    $("#editor").animate({ width: 985, height: 1 }, 1500, function () {
        $("#editor").hide();
        $("#editor textarea").hide();
    });
}

function setedit() {
    $.ajax({
        type: "POST",
        url: "engine.php",
        data: "title=" + $('#editorTitle').attr('value') + "&text=" + $('#editorText').html(),
        beforeSend: function () {
            $('#mainField').html('<img src="data/images/loader.gif" alt="Loading...">');
        },
        success: function (msg) {
            alert(msg);
            closeEditor();
            search();
        }
    });
}
function search() {
    $('#title').val($('#search').val());

    $.get('engine.php?search=' + $('#search').val(), function (data) {
        $('#mainField').html(data);
    });

    $.get('engine.php?raw=true&search=' + $('#search').val(), function (data2) {
        $('#editorText').html(data2);
    });

    $.get('engine.php?title=true&search=' + $('#search').val(), function (data2) {
        $('#h1').html(data2); // Row 152
        $('#editorTitle').html(data2);
    });
}

$(document).ready(function () {
    $("#ready").html('Document ready at ' + event.timeStamp);
});
_

しかし、何が問題なのですか?!?!

13
Thew

HTMLの前におそらくJavaScriptを含めましたexample

ウィンドウがロードされたときに(またはDOMが完全にロードされたときにJavaScriptを実行する)、またはJavaScriptを含める必要がありますafterHTML: example

22
Aron Rotteveel

次のように、イベントを呼び出す必要がありますドキュメントの準備が完了した後

$(document).ready(function () {
  // Your code
});

これは、ブラウザでレンダリングされる前に要素を操作しようとしているためです。

したがって、投稿した場合は次のようになります。

$(document).ready(function () {
  var editorTitle = $('#editorTitle').val();
  var editorText = $('#editorText').html();
});

それが役に立てば幸い。

ヒント:jQueryオブジェクトは常に後で使用するために変数に保存し、ドキュメントのロード後に実際に実行する必要があるコードのみをready()関数内に入れる必要があります。

8
Jonathan

これは愚かですが、将来の参考のために。すべてのコードを次の場所に配置しました。

$(document).ready(function () {
    //your jQuery function
});

しかし、まだ動作していませんでしたし、undefined値を返していました。 HTML DOMを確認します

<input id="username" placeholder="Username"></input>

そして、jQueryで間違って参照していることに気付きました:

var user_name = $('#user_name').val();

作ります:

var user_name = $('#username').val();

私の問題を解決しました。

そのため、以前のコードを常に確認することをお勧めします。

3
fWd82

文書準備機能にロードするのを忘れた可能性がありますか?

$(document).ready(function () {

    //your jQuery function
});
3
Marcel Colomb

試してください:$('#editorTitle').attr('value')

0
null

昨日、私が取り組んでいたプロジェクトでこれに出くわしました。私は特定のケースです。入力の名前は正確ではありませんでしたが、how IDの名前が付けられました。

<input id="user_info[1][last_name]" ..... />
var last_name = $("#user_info[1][last_name]").val() // returned undefined

ブラケットを取り外すことで問題が解決しました:

<input id="user_info1_last_name" ..... />
var last_name = $("#user_info1_last_name").val() // returned "MyLastNameValue"

とにかく、おそらく一部の人にとっては簡単なことではありませんが、万が一これが他の人に役立つ場合は...そこに行きます!

:-)-ドリュー

0
Drew

$()でオブジェクトをラップするのを忘れたかもしれません

  var tableChild = children[i];
  tableChild.val("my Value");// this is wrong 

正しいものは

$(tableChild).val("my Value");// this is correct
0