3

为什么 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>
4

6 回答 6

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

你不需要邪恶的 eval() 这个函数......

于 2009-03-04T16:43:07.067 回答
9

问题是你有两个时期被连接起来:

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

您的结果字符串变为:"document..frm.myButton.value;"

删除其中一个期间,它将起作用。

于 2009-03-04T16:41:37.193 回答
1

你也可以去:

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

function drvFunc(elemid){ 
   alert(document.getElementById(elemid).value); 
}
于 2009-03-05T09:55:47.507 回答
1

我是这个代码线程的原作者。我不确定我是否正确地说明了问题。

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

}
于 2009-03-04T17:23:00.073 回答
1

改变

var d = "document."

var d = "document"

您正在使用“document..frm”运行 eval

于 2009-03-04T16:45:34.003 回答
0

您需要在<input>标签上的属性周围加上引号(单引号或双引号)。

Firefox 处理未引用的属性可能与 IE 不同:http ://www.cs.tut.fi/~jkorpela/qattr.html

正如其他人所说,您还需要删除多余的点"document.",并且可能也应该重构drvFuncto remove 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>
于 2009-03-04T17:32:44.840 回答