2009-03-04 21 views
3

Neden Firefox bunu işlemez. Bu kod IE'de çalışır.FireFox bu işlev

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

sonuçta kullanılacak dize olur: "document..frm.myButton.value;"

dönemlerinden biri Kaldır

<%@ 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

YOK ÇOCUKLAR, StackOverflow en Oluşturucu bir hata var. –

+0

Soruyu uygun bir şekilde girerek çözdüm. Lütfen bu adamı bunun için aşağı oylama! –

+0

Bunu gördüm, tam olarak ne oldu? – ryeguy

cevap

9

sorun iki dönem ardarda ediliyor olması ve işe yarayacak.

+0

Veya daha da iyisi, kullanın: alert (document.frm [elem.name] .value); Ve fonksiyondaki diğer her şeyden kurtulun; –

+1

Katılıyorum ... ama bu OP için bir öğrenme alıştırması gibi görünüyor, bu yüzden (daha iyi) alternatifler önermedim. ;-) – Cerebrus

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

Bu fonksiyon için kötü eval() gerek yoktur ...

+0

Size cevaptan +10 oy vermek istiyorum. – some

1

Değişim

var d = "document." 

Sen "belgeyle eval çalıştıran

var d = "document" 

için. .frm "

1

Özgünüm Bu kod parçasının yazarı. Sorunu doğru bir şekilde belirttiğimden emin değilim. Bu gibi bazı kod yazmak olabilir ve IE çalışıyor bir form üzerinde

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)'> 

... sonra drvFunc yapabilirdi bu

function drvFunc(elem) 
{ 

} 
+0

quote özellik değerleri! – SilentGhost

+0

ve betiği daha uygun bir yere koyun, bir belgenin alt öğesi olamaz – SilentGhost

+0

Orijinal yazara: Tüm kodları 4 boşlukla öneki (işaretleyin ve 0101 düğmesini tıklatın) ve doğru şekilde görüntülenecektir. Düzenleme pencerenizin altına bakarsanız, nasıl görüneceğinin bir önizlemesi vardır. Bu yazıyı sizin için düzenledim. – some

0

You <input> etiketindeki özniteliklerin etrafında tırnak (tek veya çift) koymanız gerekir. http://www.cs.tut.fi/~jkorpela/qattr.html

Ayrıca diğerleri söylediler "document." ekstra nokta kaldırmak gerekir ve muhtemelen de eval kaldırmak için drvFunc yeniden düzenlemelisiniz:

Firefox muhtemelen IE için farklı tırnaksız Attibutes ilgileniyor.

Firefox 3 altında mükemmel benim için işleri şunlardır:

<%@ 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

da gidebiliriz:

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

function drvFunc(elemid){ 
    alert(document.getElementById(elemid).value); 
}