2012-06-25 52 views
-1

可能重复:
getElementByClass().setAttribute doesn't work设置名称属性动态

为什么这样的:

document.getElementsByClassName('cke_source').setAttribute('name', "mymessage") 

将返回:

TypeError: Object #<NodeList> has no method 'setAttribute' 

document.getElementsByClassName('cke_source')正确返回对象。

  • 请不要jQuery。
+2

'的console.log(document.getElementsByClassName( 'cke_source'));'PS:根据错误信息你'NodeList',而不是一个节点 – zerkms

回答

5

document.getElementsByClassName将返回一个节点列表(如数组)的元素。所以,你需要把它看作一个数组。如果您只有一个元素,请尝试以下操作:

document.getElementsByClassName('cke_source')[0].setAttribute('name', "mymessage") 
5

getElementsByClassName将返回项目集合,而不是单个项目。

var pColl = document.getElementsByClassName('cke_source'); 
for (var ii=0; ii< pColl.length; ii++) 
{ 
    pColl[ii].setAttribute('name', 'foo'); 
} 
+1

刚走出curiousty的。为什么'ii'而不是'i'作为变量?这是一个在任何地方或任何特定的约定吗? – Jashwant

+1

这是许多人使用的惯例。思想是,当你需要追踪代码时......搜索'我'是非常没用的。 :) –

+0

是的。不错的想法;) – Jashwant