Ваш вызов $('#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();
});