Ich schreibe in zwei Dateien - eine ist HTML und eine ist JavaScript. So ein Objekt zu nennen ichder Unterschied zwischen aufrufenden Objekt und Funktion in Javascript
document.getElementById("nameObj").onmouseover = changeMe;
und in der JavaScript-Datei kann ich
changeMe = function()
{
//and here i write the function
}
aber jetzt versuche ich meinen Code zu optimieren und eine Funktion mit Objekten darin zu nennen. Ich habe Abschnitte (4 davon) erstellt und ich versuche, die Farbe mit onmouseover
und onmouseout
zu ändern. Hier ist der Code des html:
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" href="style.css">
<script src="script.js"> </script>
<title> test 2</title>
</head>
<body>
<header> </header>
<div id="wrapper">
<main>
<section class="mysection" id="section1"> </section>
<section class="mysection" id="section2"> </section>
<section class="mysection" id="section3"> </section>
<section class="mysection" id="section4"> </section>
</main>
<div class="clear"> </div>
</div>
<footer> </footer>
<script>
(function(){
var sec = document.getElementsByClassName("mysection");
for(var i=0; i<3; i++)
{
sec[i].onmouseover=changeMe(sec[i], i);
sec[i].onmouseout=changeBack(sec[i]);
}
})();
</script>
</body>
</html>
und hier ist JS:
function changeMe(t_section, count)
{
if(count==0)
{
t_section.style.background="yellow";
}
if(count==1)
{
t_section.style.background="blue";
}
if(count==2)
{
t_section.style.background="green";
}
if(count==3)
{
t_section.style.background="red";
}
};
function changeBack(t_section)
{
t_section.style.background="gray";
};
Aber es funktioniert nicht. Was habe ich falsch gemacht?
Mögliche Duplikat [JavaScript-Verschluss Innenschleifen - einfaches praktisches Beispiel] (http://stackoverflow.com/questions/750486/javascript-closure-inside-loops-simple- Praxisbeispiel) – MinusFour