问题
hey guys, i wanna create the simplest bookmarklet for my browser.
javascript:document.getElementsByClassName('source').style.visibility='visible';
I have multiple div.source in my body. By default they are set to .source { display:none; } with css.
My console tells me: Uncaught TypeError: Cannot set property 'display' of undefined
When I click the bookmarklet all .source divs should be visible. What am I doing wrong here?
回答1:
You might need to loop through the results, like this:
var divs = document.getElementsByClassName('source');
for(var i=0; i<divs.length; i++) {
divs[i].style.display='block'
}
And also as @ionoy mentioned, use display attribute. I hope that helps.
http://jsfiddle.net/erick/rb7bn/1/
回答2:
There is 'visibility' and there is 'display'. They are quite different beasts.
W3Schools:
visibility
display
回答3:
Go for display. It's works fine with many browsers and in many cases.
来源:https://stackoverflow.com/questions/5179798/javascript-getelementsbyclassname-always-returns-none