2012-02-15 20 views
0

"cmd"隠しテキストを以下の値に設定する必要があります。 Chromeはこのスクリプトを実行しますが、Firefox(少なくとも3.6)は実行しません。なぜこのjavascriptはChromeでは実行されますが、Firefoxでは実行されませんか?

私はfirefoxでjavaをチェックしました。また、 "javascriptを実行してください"というオプションもあります。私はjqueryのものをFirefoxで動かしています。私は何をすべきか?

function envia() { 

    frm = document.forms['detalha']; 
    tx = frm.elements("cmd"); 

    tx.value = '0'; 
    alert('document pressed' + document.pressed); 
    if (document.pressed == '2') { 
     tx.value = '2'; 
    } else if (document.pressed == '3') { 
     tx.value = '3'; 
    } else if (document.pressed == '4') { 
     tx.value = '4'; 
    } 
    return true; 
} 
<form name="detalha" action="/publicopj/Altera" onsubmit="envia()"> 

<input type="submit" value="Save" name="acao" onclick="document.pressed=3"/> 

ありがとうございます。

+0

ここで、/はどのようにenvia()関数がトリガされるのですか? –

+0

@MarcB、すみません、忘れました。上記のコードを "onsubmit"ステートメントで更新しました。 Firefox Developer Consoleを見て、 "frm.element"が関数ではないというエラーが表示されました。おそらくFirefoxはこのメソッドを持っていません... – Alex

+0

frm.cmdまたはfrm ["cmd"]を使用 –

答えて

2

document.forms[...].elementsは配列であり、関数ではありません。 .elementsビットに()があり、それを関数として呼び出そうとしています。

tx = frm.elements["cmd"]; // note the square brackets 
+0

技術的には正確には配列ではなく、NodeListであると考えられますが、ほとんどのブラウザは実際にHTMLCollectionを返します。トライデントやその他のブラウザでは、関数のようにHTMLCollectionやNodeListを呼び出すことができます。この場合、 'elements.item(arg)'にマップされます。発見されたGeckoはこれをサポートしていません。 –

関連する問題