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?

Était-ce utile?

La 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 
}

Autres conseils

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 = ...

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top