2012-10-18 110 views
1

使用谷歌浏览器,我不知道为什么,这并不工作:(为什么不这么简单,一行JavaScript代码工作?

// ==UserScript== 
// @name  My Fancy New Userscript 
// @namespace http://use.i.E.your.homepage/ 
// @version 0.1 
// @description enter something useful 
// @match  http://*/* 
// @copyright 2012+, You 
// ==/UserScript== 

document.getElementsByTagName('a').style.color='Red'; 
+1

顺便说一句,CSS的颜色名称通常写在小写(例如''红'')。 –

回答

4

因为它返回一个“阵列式”集合,您需要单独操作上的元素。

document.getElementsByTagName('a')[0].style.color='red'; 

如果您预计多的比赛,你会在一个循环中运行。

var aList = document.getElementsByTagName('a'); 

for (var i = 0, len = aList.length; i < len; i++) { 
    aList[i].style.color='red'; 
} 

当然,对于这个简单的操作,你可能会使用CSS而不是JS。

如果您只想要链接,可以使用document.links而不是getElementsByTagName

0

getElementsByTagName返回一个NodeList,而不仅仅是一个元素。您需要循环并编辑每个人的style.color

+0

我将它改为 for(int i = 0; i user1757372

+0

@ user1757372:将'document.getElementsByTagName('a')'指定给一个变量,不要继续调用它。 –

+0

var x = document.getElementsByTagName('a'); for(int i = 0; i user1757372

1

document.getElementsByTagName返回NodeList。你必须做如下的事情:

var anchors = document.getElementsByTagName('a'), i, j; 
for (i=0, j=anchors.length; i<j; i++) { 
    anchors[i].style.color = 'red'; 
} 
+2

您不应在阵列或阵列类集合上使用“for-in”。您的当前代码会在Firefox中引发错误,因为'for-in'循环中包含非元素。 –

+2

您的for-in循环也会捕获NodeList的''length'',''item''和''namedItem''属性。避免for-in。改为使用。 –

+1

@ user1689607是的,先生,你是对的。我会相应地编辑。 –

相关问题