Javascript首次亮相-从Chrome控制台到bookmarklet
我是JS新手,正在尝试为一个网站编写一个简单的bookmarklet,该网站的divs类“collapseable”设置为display:none;我想通过一次单击将所有类为“collapseable”的元素设置为显示:block。 浏览这个网站时,我成功地整合了以下代码,当我将其粘贴到Google Chrome的JS控制台时,这些代码运行良好:它返回值“block”,但对网站的影响是我所寻求的。但是,当我创建一个带有URL javascript:mycode的bookmarklet,它只会显示一个带有文本“block”的空白页 这是我的代码,如果有人能告诉我我做错了什么,我将非常感激:Javascript首次亮相-从Chrome控制台到bookmarklet,javascript,css,Javascript,Css,我是JS新手,正在尝试为一个网站编写一个简单的bookmarklet,该网站的divs类“collapseable”设置为display:none;我想通过一次单击将所有类为“collapseable”的元素设置为显示:block。 浏览这个网站时,我成功地整合了以下代码,当我将其粘贴到Google Chrome的JS控制台时,这些代码运行良好:它返回值“block”,但对网站的影响是我所寻求的。但是,当我创建一个带有URL javascript:mycode的bookmarklet,它只会显示
javascript:function getElementsByClassName(classname, node) {
if(!node) node = document.getElementsByTagName("body")[0];
var a = [];
var re = new RegExp('\\b' + classname + '\\b');
var els = node.getElementsByTagName("*");
for(var i=0,j=els.length; i<j; i++)
if(re.test(els[i].className))a.push(els[i]);
return a;};
var elems = getElementsByClassName('collapseable');
for (var i=0;i<elems.length;i+=1){
elems[i].style.display = 'block';}
javascript:函数getElementsByCassName(类名,节点){
如果(!node)node=document.getElementsByTagName(“body”)[0];
var a=[];
var re=new RegExp('\\b'+classname+'\\b');
var els=node.getElementsByTagName(“*”);
对于(var i=0,j=els.length;i当我尝试自己制作一个bookmarklet时,我遇到了同样的问题。我的解决方案是使用void(函数({/*your code*/})(
)
javascript:void(函数(){
var getElsByCN=document.getElementsByClassName||
函数(类名、节点){
如果(!node)node=document.body;
变量a=[],
re=new RegExp('\\b'+classname+'\\b'),
els=node.getElementsByTagName(“*”);
对于(变量i=0,j=els.length;i
这是因为由于使用了void
,它返回了一个未定义的值。当脚本在页面上写入block
时,很可能是因为这是函数设置/访问的最后一个值。非常感谢您的快速回答;它工作得非常好。
javascript:void(function(){
var getElsByCN = document.getElementsByClassName ||
function(classname, node) {
if(!node) node = document.body;
var a = [],
re = new RegExp('\\b' + classname + '\\b'),
els = node.getElementsByTagName("*");
for (var i = 0, j = els.length; i < j; i++)
if (re.test(els[i].className))
a.push(els[i]);
return a;
};
var elems = getElsByCN('collapseable');
for (var i = 0; i < elems.length; i++)
elems[i].style.display = 'block';
)();