Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript首次亮相-从Chrome控制台到bookmarklet_Javascript_Css - Fatal编程技术网

Javascript首次亮相-从Chrome控制台到bookmarklet

Javascript首次亮相-从Chrome控制台到bookmarklet,javascript,css,Javascript,Css,我是JS新手,正在尝试为一个网站编写一个简单的bookmarklet,该网站的divs类“collapseable”设置为display:none;我想通过一次单击将所有类为“collapseable”的元素设置为显示:block。 浏览这个网站时,我成功地整合了以下代码,当我将其粘贴到Google Chrome的JS控制台时,这些代码运行良好:它返回值“block”,但对网站的影响是我所寻求的。但是,当我创建一个带有URL javascript:mycode的bookmarklet,它只会显示

我是JS新手,正在尝试为一个网站编写一个简单的bookmarklet,该网站的divs类“collapseable”设置为display:none;我想通过一次单击将所有类为“collapseable”的元素设置为显示:block。 浏览这个网站时,我成功地整合了以下代码,当我将其粘贴到Google Chrome的JS控制台时,这些代码运行良好:它返回值“block”,但对网站的影响是我所寻求的。但是,当我创建一个带有URL javascript:mycode的bookmarklet,它只会显示一个带有文本“block”的空白页

这是我的代码,如果有人能告诉我我做错了什么,我将非常感激:

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';
)();