Question

I am trying to write a javascript for hidding all elements of the class "prewrap", when any image on the webpage is clicked.

Code so far:

<script type="text/javascript">
function hidepre() {
    var elems = document.getElementsByClassName("prewrap");
    for (var i = 0; i < elems.length; i++) {
        if (elems[i].style.visibility === "hidden") {
            elems[i].style.visibility = "visible";
        } else {
            elems[i].style.visibility = "hidden";
        }
    }
}
var imgs = document.getElementsByTagName("img");
for (var i = 0; i < imgs.length; i++) {
    imgs[i].onclick = "hidepre()";
}
</script>

Jsfiddle: http://jsfiddle.net/aX5kQ/

But this is not working at all, any idea what went wrong?

Was it helpful?

Solution

Your code is working, check this fiddle DEMO

EDIT

Remove the script tag from your jsfiddle leave only the code.

   function hidepre() { 
    var elems = document.getElementsByClassName("prewrap");
    for (var i = 0; i < elems.length; i++) {
        if (elems[i].style.display === "none") {
            elems[i].style.display = "block";
        } else {
            elems[i].style.display = "none";
        }
    }
}
var imgs = document.getElementsByTagName("img");
for (var i = 0; i < imgs.length; i++) {
    imgs[i].onclick = hidepre;
}

Also in your post this line should be corrected ->

var imgs = document.getElementsByTagName("img");
for (var i = 0; i < imgs.length; i++) {
    imgs[i].onclick = hidepre; //this line - here should only be the name of the function without quotes and parentheses 
}

OTHER TIPS

It works just fine if you remove the script tag from the JS area of jsfiddle (you put raw javascript in there.. no tags)

edited demo at http://jsfiddle.net/aX5kQ/1/

Hi this code is executed immediately before the image is loaded and so no img is found.

var imgs = document.getElementsByTagName("img");
for (var i = 0; i < imgs.length; i++) {
    imgs[i].onclick = "hidepre()";
}

Execute this when the DOM is finished loading with window.onload = ...

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top