簡體   English   中英

Javascript首次亮相-從Chrome控制台到書簽

[英]Javascript debut - from Chrome console to a bookmarklet

我是JS的新手,正在嘗試為具有div且將“可折疊”類設置為顯示的網站編寫一個簡單的書簽: 我想要一鍵設置所有類“ collapseable”的元素來顯示:塊。 瀏覽此網站后,我設法整理了以下代碼,當我將其粘貼到Google Chrome的JS控制台中時,該代碼可以很好地工作:它返回值“ block”,但對網站的影響正是我要的。 但是,當我使用URL javascript:mycode ...創建一個書簽時,它只會顯示一個空白頁面,其中包含文本“ 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';}

當我嘗試自己制作一個書簽時,我遇到了同樣的問題。 我的解決方案是使用void (function({ /* your code */ })()

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

之所以有效,是因為由於使用void它返回了一個undefined值。 當您的腳本在頁面上寫block時,可能是因為那是該功能設置/訪問的最后一個值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM