我正在重新审视一年前在另一个人的帮助下制作的这段代码。不幸的是,我不再与他们联系以获得更多帮助。基本上它会动态地将类添加到来自tb
的文档的b
和namesToChange
节点。现在我要做的是将一些文本附加到div
类dtxt
节点,但仍然使用下面的代码。我正在使用代码$('td.pn_adm_jeff').children('div.dtxt').append('zzz');
并且它可以正常工作,但它会不断添加一次,如下图所示。如何让它添加一次并停止?
照片 http://img6.imageshack.us/img6/5392/7c23ddb145954aefadb1b9f.png
代码
function customizefields(a) {
$('td b').each(function () {
name = $(this).text();
if (name.indexOf(" ") != -1) {
name = name.substring(0, name.indexOf(" "))
}
if (a[name]) {
this.className = a[name].class;
this.parentNode.className = a[name].img
}
})
$('td.pn_adm_jeff').children('div.dtxt').append('zzz');
}
var namesToChange = {
'Jeff' :{'class':'pn_adm','img':'pn_adm_jeff'}
};
setInterval(function () {
customizefields(namesToChange)
}, 1000);
更新
var needsUpdate = true;
function customizefields(a) {
$('td b').each(function () {
name = $(this).text();
if (name.indexOf(" ") != -1) {
name = name.substring(0, name.indexOf(" "));
}
if (a[name]) {
this.className = a[name].class;
this.parentNode.className = a[name].img;
}
});
if (needsUpdate) {
$('td.pn_adm_jeff').children('div.dtxt').append('testing');
needsUpdate = false;
}
}
var namesToChange = {
'jeff' :{'class':'pn_adm','img':'pn_adm_jeff'};
};
setTimeout(function () {
customizefields(namesToChange);
}, 1000);
答案 0 :(得分:2)
使用setTimeout而不是setInterval(interval用于重复计时器任务,timeout是单个计时器任务)
为了防止某个任务在重复任务中出现多次,可以进行简单的修复。
// global variable
var needsUpdate = true;
// now in the timer task
if (needsUpdate) {
$('td.pn_adm_jeff').children('div.dtxt').append('zzz');
needsUpdate = false;
}
这对你有用吗?
答案 1 :(得分:0)
定义一个全局变量来保存输入标志
var appended = false;
function appendthestring() {
if(!appended) $('td.pn_adm_jeff').children('div.dtxt').append('zzz');
appended = true;
}