我的目的很簡單:我有一個newSpan()
功能,創建一個新的span
和main
元素的第一個孩子之前將其插入(或追加,如果main
是空的),和一個letterTyper()
函數,該函數用存儲在常量CONTENT
中的字符串填充插入的元素,同時生成一種向後的分類效果。這個想法是創建一個新的元素,然後用window.onload
中的循環在給定的次數內觸發效果。中創建並插入DOM元素執行功能
但是,當我填的是window.onload
匿名函數與
window.onload = function() {
newSpan();
letterTyper();
newSpan();
letterTyper();
}
我到底是什麼了在DOM是
<main>
<span id="#span1">lorem ipsum</span>
<span id="#span0"></span>
</main>
我還試圖用一個DOMContentLoaded
事件,沒有效果。這是爲什麼?我究竟做錯了什麼?
我的代碼:
const CONTENT = 'lorem ipsum';
var main = document.querySelector('main');
var spanId = 0;
var charCount = CONTENT.length;
window.onload = function() {
newSpan();
letterTyper();
newSpan();
letterTyper();
}
function newSpan() {
var newSpan = document.createElement('span');
var isEmpty = main.innerHTML === '';
newSpan.setAttribute('id', '#span' + spanId);
if (isEmpty) {
main.appendChild(newSpan);
} else {
main.insertBefore(newSpan, document.getElementById('#span' + (spanId - 1)));
}
spanId++;
}
function letterTyper() {
var targetSpan = main.firstChild;
targetSpan.textContent = CONTENT.substring(charCount, charCount + 1) + targetSpan.textContent.substring(0, targetSpan.textContent.length);
charCount--;
if (charCount < 0) {
clearTimeout(timer);
charCount = CONTENT.length;
} else {
timer = setTimeout('letterTyper()', 100);
}
}
的window.onload執行只有一次,也不要放置任何循環存在。 – Angels