您好我正试图在我的OOP函数中获取隐藏元素的值。这是代码:
var refreshTimeout;
var rms = new RMS();
rms.refresh();
function RMS() {
this.refresh = function(){
alert($("#ids").val());
$.post(refreshUrl, {ids: $("#ids").val()}, function(response){
var result = $.parseJSON(response);
if (result != null) {
$("#rms").attr("value", result.rms);
}
refreshTimeout = setTimeout(function() { rms.refresh(); }, 2000);
});
}
}
问题是$("#ids").val()
在firebug控制台中有效,但在rms.refresh()中没有...
我做错了什么?
答案 0 :(得分:1)
您的$('#ids').val()
调用看起来很好,只要此时加载DOM(即在$(document).ready()
块内)。
但是你的计时器功能看起来有点可疑。你指的是外部范围内的rms
,当你应该引用当前对象时。
同样,您的与计时器相关的值应该在类中正确封装,否则您不能有多个实例。
// class definition - can be loaded anywhere
var RMS = function(ids, rms) {
var self = this;
var timer = null;
var delay = 2000;
this.refresh = function() {
$.post(refreshUrl, {ids: $(ids).val()},
function(response) {
var result = $.parseJSON(response);
if (result != null) {
$(rms).attr("value", result.rms);
}
timer = setTimeout(function() {
self.refresh();
}, delay);
}
);
};
};
// invocation deferred until the DOM is ready
$(document).ready(function() {
var rms = new RMS('#ids', '#rms');
rms.refresh();
});
答案 1 :(得分:0)
试试这段代码:
$(document).ready(function(){
var refreshTimeout,
rms = new RMS();
rms.refresh();
function RMS() {
this.refresh = function(){
$.post(refreshUrl, {ids: $('#ids').val()}, function(response){
if (typeof(response) != 'undefined') {
$('#rms').attr('value', response.rms);
}
refreshTimeout = setTimeout(function() { rms.refresh(); }, 2000);
}, 'json');
}
}
});