jQuery val是未定义的?

时间:2011-02-15 16:01:35

标签: javascript jquery html undefined

我有这段代码:

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

但是当我写$('#editorTitle').val()$('#editorText').html()时,$('#editorTitle').val()是'未定义'且$('#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);
});

但是出了什么问题?!?!

7 个答案:

答案 0 :(得分:21)

您可能在 HTML之前添加了您的JavaScript example

您应该在窗口加载时执行JavaScript(或者更好,在DOM完全加载时执行),或者在 HTML后添加JavaScript example

答案 1 :(得分:8)

您应该在文档准备好之后调用事件 ,如下所示:

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

这是因为您试图在浏览器呈现元素之前对其进行操作。

所以,在你发布的情况下应该看起来像这样

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

希望它有所帮助。

提示:始终将jQuery对象保存在变量中供以后使用,只有在文档加载后才真正需要运行的代码才能进入ready()函数。

答案 2 :(得分:3)

是否忘记将其加载到文档就绪函数中?

$(document).ready(function () {

    //your jQuery function
});

答案 3 :(得分:2)

这是愚蠢的,但供将来参考。 我确实把所有代码都放在了:

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

解决了我的问题。

因此,检查以前的代码总是更好。

答案 4 :(得分:0)

尝试:$('#editorTitle').attr('value')

答案 5 :(得分:0)

您可能忘记用$()

包装您的对象
  var tableChild = children[i];
  tableChild.val("my Value");// this is wrong 

而ccorrect就是

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

答案 6 :(得分:0)

我昨天在一个我正在从事的项目中遇到了这个问题。我是我的具体情况,输入的名称不完全是这个名称,而是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"

无论如何,对于某些人来说可能毫无道理,但是万一这对其他人有帮助...那么您去了!

:-) -提