2009-03-04 4 views
3

Firefoxがこれを処理しないのはなぜですか?このコードはIEで動作します。FireFox this Function

  1. var d = "document."
  2. var str = d+"."+f...

あなたの結果の文字列は次のようになります:"document..frm.myButton.value;"

する期間の1削除

<%@ Language=VBScript %> 
<HTML> 
<HEAD> 
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0"> 
</HEAD> 
<script type='text/javascript'> 
function drvFunc(elem) 
{ 
    var e = elem.name; 
    var d = "document." 
    var f = "frm"; 
    var str = d+"."+f+"."+e+".value;"; 
    alert(eval(str)); 
} 
</script> 
<BODY> 
<form name=frm method=post> 
<input type=button name=myButton id=myButton value='MyButton' onclick='drvFunc(this)'> 
</form> 
</BODY> 
</HTML> 
+0

NO GUYSを、それはにStackOverflowのレンダラのバグです。 –

+0

私は正しくインデントして問題を解決しました。ちょうどそれのためにこの男を投票しないでください! –

+0

私はそれを見ました、正確に何が起こったのですか? – ryeguy

答えて

9

問題は、次の2つの期間が連結されていることですそれは動作します。

+0

さらに、より良い使用: アラート(document.frm [elem.name] .value); そして関数内の他のすべてを取り除く; –

+1

私は同意します...しかし、これはOPの学習練習に見えるので、私は(より良い)代替案を提案しませんでした。 ;-) – Cerebrus

13
function drvFunc(elem) { 
    alert(elem.value); 
} 

あなたはこの機能のために悪のeval()を必要としない...

+0

私はあなたに答えよりも+10票を差し上げます。 – some

1

変更

var d = "document." 

あなたは「文書でのevalを実行している

var d = "document" 

へ。 .frm "

1

私はオリジナルですこのコードスレッドの著者。私は問題を正しく述べたかどうかはわかりません。私はこのようないくつかのコードを書くかもしれないし、それはIEで正常に動作フォームで

function drvFunc(elem) 
{ 
    **var e = elem.name;** <-- in firefox, this fails. e is not initialized!! 
    var d = "document." 
... 
} 

...

<input type=button name=1stButton id=1stButton onclick='drvFunc(this)'> 
<input type=button name=2ndButton id=2ndButton onclick='drvFunc(this)'> 

...その後drvFuncを行うことができます この

function drvFunc(elem) 
{ 

} 
+0

クォートの属性値! – SilentGhost

+0

そして適切な場所にスクリプトを置くと、文書の子にはなれません – SilentGhost

+0

元の著者:すべてのコードに4つのスペースを付けると(コードをマークして0101ボタンをクリックします)、正しく表示されます。編集ウィンドウの下を見ると、どのように表示されるかのプレビューがあります。私はあなたのためにこの投稿を編集しました。 – some

0

あなたを<input>タグの属性の前後に引用符(シングルまたはダブル)を付ける必要があります。 http://www.cs.tut.fi/~jkorpela/qattr.html

あなたはまた、他の人が言っているよう"document."に余分なドットを削除する必要があり、そしておそらく同様にevalを削除するdrvFuncをリファクタリングする必要があります

FirefoxはおそらくIEとは異なっ引用符で囲まれていないattibutesを処理しています。

のFirefox 3の下の私のために完璧に、次の作品:

<%@ Language=VBScript %> 
<HTML> 
<HEAD> 
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0"> 
<script type='text/javascript'> 
function drvFunc(elem) 
{ 
    alert(elem.value); 
} 
</script> 
</HEAD> 
<BODY> 
<form name="frm" method="post"> 
<input type="button" name="myButton" id="myButton" value="MyButton" onclick="drvFunc(this)"> 
</form> 
</BODY> 
</HTML> 
1

あなたも行くことができなかった:

<input type='button' name='2ndButton' id='2ndButton' onclick='drvFunc(this.id)'> 

function drvFunc(elemid){ 
    alert(document.getElementById(elemid).value); 
} 
関連する問題