I’m learning javascript and I’m having trouble figuring out why my script is not working. I’m guessing its because the imageIn and imageOut functions don’t have access to the counter variable. How would I go about fixing this? Both imageIn and imageOut have errors in my error console ‘undefined’.
<style type="text/css">
ul {
list-style-type:none;
}
</style>
<body>
<div id="slideShow">
<ul>
<li>
<img src="stockboat.png" alt="Steam Boat" id="boat" />
</li>
</ul>
</div>
<script type="text/javascript" src="getElementsByClassName.js"></script>
<script type="text/javascript">
var image = document.getElementsByTagName('img');
for (i = 0, ii = image.length; i < ii; i++) {
image[i].style.opacity = "0.5";
image[i].addEventListener('mouseover', imageIn, 'false');
image[i].addEventListener('mouseout', imageOut, 'false');
}
function imageIn() {
image[i].style.opacity = "1";
}
function imageOut() {
image[i].style.opacity = "0.5";
}
</script>
</body>
</html>
I think you’re right about it not recognizing your iteration variable, you’ll have to do:
Use reference object:
-or-
Closure Approach:
Need to change function definition:
This method allows you to reference the loop variable, which is nice to have as an example for when using setTimeOut in a loop – so you can reuse code later 🙂