0

所以,我有一些 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”
  • 添加默认描述
  • 添加关键字(等于提示值)
  • 将类别更改为“教育”
4

1 回答 1

2

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

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

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

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

if (catChildNodes[y].value == "27")
于 2012-08-08T06:38:23.167 回答