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