[英]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.