0

だから、私はローカルでGreasemonkeyでテストするいくつかのJavaScriptコードを持っています。しかし、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メソッドがあり、後者にはありません(テキストノードに属性がないため)。要素の子のみが必要で、テキストノードは必要ない場合は、の代わりにchildrenプロパティchildNodesを使用する必要があります。

コードには少なくとももう1つのバグがありますが、これは比較ではありません。

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

これにより、値27がに割り当てcatChildNodes[y].valueられます。実際に比較したい場合は、比較演算子を使用する必要があります。

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