jQuery val не определен?

у меня есть этот код:

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

но когда я пишу $('#editorTitle').val() и $('#editorText').html(), $('#editorTitle').val() это "неопределенным" и $('#editorText').html() пусто?

что не так?


Edit:

вот мой полный код:

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

но что случилось?!?!

7 ответов


вы, вероятно, включили свой JavaScript до HTML:пример.

вы должны либо выполнить свой JavaScript при загрузке окна (или лучше, когда DOM полностью загружен), либо вы должны включить свой JavaScript после HTML-код: пример.


вы должны вызвать события после того, как документ готов, например:

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

Это потому, что вы пытаетесь манипулировать элементами, прежде чем они будут отображаться браузером.

Итак, в случае, если вы разместили его, он должен выглядеть примерно так

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

надеюсь, что это помогает.

советы: Всегда сохраняйте объект jQuery в переменной для последующего использования и только код, который действительно нужно запустить после загрузки документа следует зайти внутрь функции ready ().


может быть, вы забыли загрузить его в функцию готовности документа?

$(document).ready(function () {

    //your jQuery function
});

Это глупо, но на будущее. Я поместил весь свой код в:

$(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();

решить мою проблему.

поэтому всегда лучше проверить свой предыдущий код.


попробуй: $('#editorTitle').attr('value') ?


вы можете забыть обернуть свой объект с $()

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

и ccorrect один

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

Я только что столкнулся с этим сам вчера на проекте, над которым я работал. Я мой конкретный случай, это было не совсем то, что вход был назван, но как идентификатор был назван.

<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"

во всяком случае, возможно, для некоторых людей это не проблема, но в случае, если это поможет кому-то еще... там вы идете!

:-) - Дрю!--5-->