Ja, der er en del alvorlige uhensigtsmæssigheder i det script. Når man bruger
removeChild, 'dræber' man ikke objektet - det ligger bare i hukommelsen og 'roder rundt'. Det betyder at man spiser og spiser af hukommelsen for hver mouseover. Man producerer hvergang et nyt div, men når man laver mouseout, flytter man det bare væk fra brugerens synsfelt.
Elementet eksisterer stadig og kan heldigvis genbruges, så hvis vi lægger elementet i en global variabel, kan vi blive ved med at genbruge det:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "
http://www.w3.org/TR/html4/strict.dtd"><html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Hello World</title>
<script type="text/javascript">
var helpNode = null;
function showBox(text, obj) {
if (!helpNode) {
helpNode = document.createElement('div');
helpNode.id = 'popBox';
helpNode.setAttribute('class','popBox');
helpNode.appendChild( document.createTextNode("-") );
}
helpNode.firstChild.nodeValue = text;
obj.appendChild(helpNode);
}
function hideBox() {
helpNode.parentNode.removeChild(helpNode);
}
</script>
<style type="text/css">
.popBox {
position: absolute;
z-index: 2;
background: #cccccc;
width: 600px;
padding: 0.3em;
border: 1px solid gray;
}
span {
color: red;
font-weight: bold;
}
</style>
</head>
<body>
<div onMouseOver="showBox('Skriv popuptekst her1', this)" onMouseOut="hideBox()"><span>Skriv hvad der skal stå på selv hjemmesiden her1</span></div>
<div onMouseOver="showBox('Skriv popuptekst her2', this)" onMouseOut="hideBox()"><span>Skriv hvad der skal stå på selv hjemmesiden her2</span></div>
<div onMouseOver="showBox('Skriv popuptekst her3', this)" onMouseOut="hideBox()"><span>Skriv hvad der skal stå på selv hjemmesiden her3</span></div>
<div onMouseOver="showBox('Skriv popuptekst her4', this)" onMouseOut="hideBox()"><span>Skriv hvad der skal stå på selv hjemmesiden her4</span></div>
</body>
</html>