Javascript 元素仅在console.log中输出时找到

Javascript 元素仅在console.log中输出时找到,javascript,jquery,dom,Javascript,Jquery,Dom,我正在打以下电话: $.ajax({ type: 'POST', url: '<?= POST_CALENDAR_GET_EVENT; ?>', data: { 'token': $('meta[name=token]').attr("content"), 'id': calEvent.id }, dataType: 'JSON', complete: function (data) {

我正在打以下电话:

$.ajax({
    type: 'POST',
    url: '<?= POST_CALENDAR_GET_EVENT; ?>',
    data: {
        'token': $('meta[name=token]').attr("content"),
        'id': calEvent.id
    },
    dataType: 'JSON',
    complete: function (data) {
        var $event = $('#myEditEvent');
        console.log($event.find('input[my_name="title"]'));
        $event.find('input[my_name="title"]').val(data.title);
        $event.find('input[my_name="date"]').val(data.date);
        $event.find('input[my_name="start_time"]').val(data.start_time);
        $event.find('input[my_name="end_time"]').val(data.end_time);
        $event.find('input[my_name="street1"]').val(data.street1);
        $event.find('input[my_name="street2"]').val(data.street2);
        $event.find('input[my_name="city"]').val(data.city);
        $event.find('input[my_name="state"]').val(data.state);
        $event.find('input[my_name="zip"]').val(data.zip);

        $("#myEditEvent").modal();
        NProgress.done();
    }
});

根据我的经验,当脚本找不到DOM元素,但从控制台运行相同代码时可以找到DOM元素时,这是因为脚本是在浏览器有机会呈现相关DOM元素之前执行的。脚本是否位于HTML页面的顶部?如果是这样,请尝试以下方法:

$(document).ready(function () { /* place or call your code here */ })

确保在页面完全加载之前脚本不会启动。

因此,事实证明,问题其实很明显:

您必须使用
success
回调,而不是使用
complete
回调
concomplete
不获取作为参数传入的响应,而是
jqXHR
对象

由于
data
不引用响应,
data.title
和所有其他属性将返回
undefined
,这使得
.val
实际获取值,而不是设置值



需要澄清的是:问题与查找或未查找元素无关。

您是否尝试使用此:$('input[my_name=“title]”)。val()?是否确实执行了
complete
回调?AJAX调用是否有任何错误?@Pavlo:我需要它位于#myEditEvent div.@Zero21xxx Yea,console.log($event.find('input[my_name=“title”]”)中;运行时,我从JQuery返回以下对象:[input,prevObject:JQuery.fn.JQuery.init[1],上下文:document,选择器:“#MyEditeEvent input[my_name=“title”]”,构造函数:function,init:function…]如果是这样的话,那么就找到了元素,那么问题出在哪里?我的代码在所有HTML之后都位于页面底部。我把它放在我创建的一个对象中。而该调用仅在单击事件时调用。。。
$(document).ready(function () { /* place or call your code here */ })