I would like to fade in a website letter by letter – but JS seems to mess up the formatting – can you tell what the error is in this code (see below) – i deployed the current version here – http://digitale-anamnese.com/results2.html – there you can see the problem.
Cheers,
Florian
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Ihre Ergebnisse</title>
<style>
body {
font-family: Arial, Helvetica, sans-serif;
background-color: #f4f4f4;
margin: 0;
padding: 20px;
}
.results-container {
background-color: #fff;
padding: 20px;
border-radius: 8px;
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
max-width: 800px;
margin: 40px auto;
}
h1, h3 {
color: #333;
}
p, ul {
font-size: 16px;
line-height: 1.6;
color: #666;
}
a {
color: #3498db;
text-decoration: none;
}
a:hover {
text-decoration: underline;
}
ul {
list-style-type: none;
padding-left: 0;
}
li {
margin-bottom: 20px;
}
.highlight {
font-weight: bold;
}
</style>
<script>
document.addEventListener('DOMContentLoaded', function() {
const container = document.querySelector('.results-container');
const originalHTML = container.innerHTML;
container.innerHTML = ''; // Clear the container
let i = 0;
function typeCharacter() {
if (i < originalHTML.length) {
if (originalHTML[i] === "<") {
// If we encounter an opening tag, add the entire tag at once
const closingTagIndex = originalHTML.indexOf(">", i);
container.innerHTML += originalHTML.slice(i, closingTagIndex + 1);
i = closingTagIndex + 1;
} else if (originalHTML[i] === "&") {
// Handle HTML entities (like )
const entityEndIndex = originalHTML.indexOf(";", i);
container.innerHTML += originalHTML.slice(i, entityEndIndex + 1);
i = entityEndIndex + 1;
} else {
container.innerHTML += originalHTML[i];
i++;
}
setTimeout(typeCharacter, 10); // Adjust this value to control typing speed
}
}
typeCharacter(); // Start the typing effect
});
</script>
</head>
<body>
<div class="results-container">
<h1>Diese Förderungen kommen in Frage</h1>
<h3>Deutschland-Spezifische Förderungen</h3>
<ul>
<li>
<span class="highlight">Zentrales Innovationsprogramm Mittelstand (ZIM)</span>
<ul>
<li><strong>Ziel:</strong> Förderung von Innovationsprojekten</li>
<li><strong>Förderquote:</strong> Bis zu 45% der förderfähigen Kosten</li>
<li><strong>Wichtige Kriterien:</strong> Innovationsgrad, Marktpotenzial, technologische Machbarkeit</li>
<li><strong>Webseite:</strong> <a href="https://www.zim.de/ZIM/Navigation/DE/Home/home.html" target="_blank">ZIM Webseite</a></li>
</ul>
</li>
<!-- ... Add other Deutschland-Spezifische Förderungen here ... -->
</ul>
<h3>EU-Förderungen</h3>
<ul>
<li>
<span class="highlight">Horizon Europe</span>
<ul>
<li><strong>Ziel:</strong> Forschung und Innovation</li>
<li><strong>Förderquote:</strong> In der Regel bis zu 100% der förderfähigen Kosten</li>
<li><strong>Wichtige Kriterien:</strong> Wissenschaftliche Exzellenz, gesellschaftliche Relevanz, europäische Zusammenarbeit</li>
<li><strong>Webseite:</strong> <a href="https://ec.europa.eu/info/horizon-europe_en" target="_blank">Horizon Europe Webseite</a></li>
</ul>
</li>
<!-- ... Add other EU-Förderungen here ... -->
</ul>
<p>Diese Programme haben unterschiedliche Anforderungen, Fristen und Auswahlverfahren. Es ist daher ratsam, sich gründlich über die einzelnen Programme zu informieren und eventuell eine professionelle Beratung in Anspruch zu nehmen.</p>
</div>
</body>
</html>
This is what I tried – http://digitale-anamnese.com/results2.html
I expected formatting (h1 tags etc. / list format) to be intact but as you can see it´s kind of messed up.
KR
2
Answers
As @RUKAclMortality pointed out, cloning did the trick :-)
Try this, I am using typed.min.js quite a handy library gives nice typing effect.