这是我的功能。
function duplicate_step_through_highlighted (element_jq, target_jq, char_cb) {
console.log( element_jq);
var contents = element_jq.contents();
for (var i = 0 ; i < contents.length; ++i) {
// if text node, step
if (contents[i].nodeType === 3) {
// insert empty text node
var new_tn = document.createTextNode('');
target_jq.append(new_tn);
// iterate it
var text = contents[i].nodeValue;
for (var j = 0; j < text.length; j++) {
char_cb(text[j],new_tn);
new_tn.nodeValue += text[j];
// *** I want an async delay here ***
}
} else { // type should be 1: element
// target_jq gets a duplicate element inserted, copying attrs
var new_elem = $(contents[i].cloneNode(false)).appendTo(target_jq);
duplicate_step_through_highlighted($(contents[i]),$(new_elem),char_cb);
// then a recursive call is performed on the newly created element as target_jq
// and the existing one as element_jq. char_cb is passed in
}
}
}
我正在做的是通过一次重建一个字符来重建一个 HTML 元素。这样做有一个很好的理由,我想要它被“输入”的视觉效果。
所以现在没有延迟,所以我的元素会立即复制。我已经检查过结果是否一致,但我越来越清楚,我可能需要完全重新编写功能,以便我能够在插入每个字符后进行异步延迟。
我是否需要重新编写它并有一个堆栈来跟踪我在元素中的位置?