FireFox это функция - PullRequest
       12

FireFox это функция

3 голосов
/ 04 марта 2009

Почему Firefox не справляется с этим. Этот код работает в IE.

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

Ответы [ 6 ]

13 голосов
/ 04 марта 2009
function drvFunc(elem) {
  alert(elem.value);
}

Для этой функции вам не нужен злой eval () ...

9 голосов
/ 04 марта 2009

Проблема в том, что у вас есть два соединяемых периода:

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

Ваша полученная строка становится: "document..frm.myButton.value;"

Удалите один из периодов, и он будет работать.

1 голос
/ 05 марта 2009

Вы также можете пойти:

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

function drvFunc(elemid){ 
   alert(document.getElementById(elemid).value); 
}
1 голос
/ 04 марта 2009

Я оригинальный автор этой ветки кода. Я не уверен, что правильно сформулировал проблему.

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

В форме я мог бы написать такой код, и он отлично работает в IE ...

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

... тогда drvFunc может сделать это

function drvFunc(elem)
{

}
1 голос
/ 04 марта 2009

Изменение

var d = "document."

до

var d = "document"

Вы используете eval с "document..frm"

0 голосов
/ 04 марта 2009

Вы должны поместить кавычки (одинарные или двойные) вокруг атрибутов на вашем теге <input>.

Firefox, вероятно, обрабатывает атрибуты без кавычек иначе, чем в IE: http://www.cs.tut.fi/~jkorpela/qattr.html

Вам также необходимо удалить лишнюю точку в "document.", как говорили другие, и, вероятно, следует также изменить drvFunc, чтобы удалить eval.

У меня в 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>
...