Javascript错误:catChildNotes [y] .setAttribute不是函数

时间:2012-08-07 22:59:44

标签: javascript firefox greasemonkey

所以,我有一些JavaScript代码,我在本地用Greasemonkey测试。但是我在Firefox错误控制台中遇到了这个持久性错误:

  

catChildNotes [y] .setAttribute不是函数

代码:

var i = prompt("How many videos have you got?", "");
function remove_mp4()
{
   titleElems=document.getElementsByName("title");
   for(i=0; i<titleElems.length; i++)
   {
      titleInner=titleElems[i].innerHTML;
      titleElems[i].innerHTML=titleInner.replace(titleInner.match(".mp4"), "");
   }
}
for (var x = 0; x < i; i++)
{
    document.getElementsByName("description")[x].value = "Visit me on my web-site :\
    \
                                                          http://www.sample.com/";
    document.getElementsByName("keywords")[x].value = prompt("Enter keywords : ","");
    catChildNodes=document.getElementsByName("category")[x].childNodes;
    catChildNodes[x + 1].removeAttribute("selected");
    for(y=0; y<catChildNodes.length; y++)
{
       if(catChildNodes[y].value="27") 
   {
          catChildNodes[y].setAttribute("selected",""); 
   }
}
}
remove_mp4();

此脚本应在Youtube上传页面上运行,并执行以下操作:

  • 从标题
  • 中删除“.mp4”
  • 添加默认说明
  • 添加关键字(等于提示值)
  • 将类别更改为“教育”

1 个答案:

答案 0 :(得分:2)

通常,当您获得元素的子节点时,您将获得其他element nodestext nodes。前者有setAttribute方法,后者没有(因为文本节点没有任何属性)。如果您只需要元素子元素而不需要文本节点,那么您应该使用children property而不是childNodes

您的代码中至少还有一个错误,这不是比较:

if (catChildNodes[y].value = "27")

这将将值<27>分配给catChildNodes[y].value。如果你真的想比较那么你应该使用比较运算符:

if (catChildNodes[y].value == "27")