私の意図は非常に簡単です:私は新しいspan
を作成し、main
要素の最初の子の前にそれを挿入(またはmain
が空の場合、それを追加します)newSpan()
機能を持っており、 letterTyper()
関数を使用して、挿入された要素をCONTENT
定数に格納された文字列で塗りつぶし、逆方向の種類の効果を生成します。その考え方は、新しい要素を作成してから、その中のある特定の回数だけループを使ってwindow.onload
というエフェクトをトリガーすることです。が作成され、挿入されたDOM要素に関数を実行
しかし、私は、私はDOM内で終わる何
window.onload = function() {
newSpan();
letterTyper();
newSpan();
letterTyper();
}
でwindow.onload
匿名関数を満たしたときに、私はまた、効果なしに、DOMContentLoaded
イベントを使用しようとした
<main>
<span id="#span1">lorem ipsum</span>
<span id="#span0"></span>
</main>
です。何故ですか?私は間違って何をしていますか?
マイコード:
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