Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何动态地从div中检索值?_Javascript_Jquery - Fatal编程技术网

Javascript 如何动态地从div中检索值?

Javascript 如何动态地从div中检索值?,javascript,jquery,Javascript,Jquery,伙计们,我有一个函数,它使用ajax调用根据div中的值动态检索数据。现在函数中的lastNoticeID值没有得到更新,因为它不在任何循环中。因此它不断重复相同的数据 代码: function callMoreData() { var lastNoticeID = $('#hiddenLastNoticeID').val(); $.ajax({ type: "GET", url: "/api/values/getnotice?num="

伙计们,我有一个函数,它使用ajax调用根据div中的值动态检索数据。现在函数中的lastNoticeID值没有得到更新,因为它不在任何循环中。因此它不断重复相同的数据

代码:

function callMoreData() {
     var lastNoticeID = $('#hiddenLastNoticeID').val();
     $.ajax({
         type: "GET",
         url: "/api/values/getnotice?num=" + lastNoticeID,
         dataType: "json",
         crossDomain: true,
         async: true,
         cache: false,
         success: function (data) {
             $.each(data, function (index, value) {
                 BindNotice(value);
             });
         },
         error: function (x, e) {
             alert('problem while fetching records!');
         }
     });
 }



 function BindNotice(values) {
     $('#divNotices').append('...some code...' +
         '<input id="hiddenLastNoticeID" type="hidden" value="' + values.LastNoticeID +
         '" />' + '...some code...');
 }
正如您在上面的代码中看到的,我正在从上面的div中检索值,然后将其传递给webApi url。。。现在运行正常,在第一次滚动时,我得到了值,但随后函数不断重复相同的值,即var lastNoticeID没有得到更新。如何让它在每次滚动事件中更新


顺便说一句,divNotices与BindNotice函数具有相同的html代码。

看起来您正在添加更多相同ID的元素。ID应该是单个实例,因此Jquery将只获取DOM中的第一个实例。这就是为什么$'hiddenLastNoticeID'.val;每次使用类时都是相同的:

 function BindNotice(values) {
     $('#divNotices').append('...some code...' +
         '<input class="hiddenNotice" type="hidden" value="' + values.LastNoticeID +
         '" />' + '...some code...');
 }
或者,您可以将LastNoticeID存储在一个变量中:

var lastNoticeID = 0;

function BindNotice(values) {
     $('#divNotices').append('...some code...' +
         '<input class="hiddenNotice" type="hidden" value="' + values.LastNoticeID +
         '" />' + '...some code...');
     lastNoticeID = values.LastNoticeID;
}

ID必须是唯一的。您的hiddenLastNoticeId将被复制。jQuery将始终匹配第一个元素。不能有多个id相同的元素。按id选择只会返回第一个元素中的一个元素。改为使用一个类,然后选择并使用最后一个类。或者更好的解决方案可能是将LastNoticeID存储在一个变量中。这并不是一个真正的答案,因为它不会为OP提供解决方案。不管怎样,你显然已经涵盖了它。但解决方案并不总是必须是代码,也不应该是代码。显然,NewbieProgrammer不知道ID是单个实例,而Jquery将它们视为单个实例。现在有了这些知识,他/她自己学习会很好。这就是我所做的。谢谢
var lastNoticeID = 0;

function BindNotice(values) {
     $('#divNotices').append('...some code...' +
         '<input class="hiddenNotice" type="hidden" value="' + values.LastNoticeID +
         '" />' + '...some code...');
     lastNoticeID = values.LastNoticeID;
}