火狐浏览器这个功能

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>

不好意思,这是Stackoverflow渲染器中的一个错误。 - Jason Cohen
我已经通过正确缩进修复了这个问题。请不要因此而对这个人进行负面评价! - Jason Cohen
我看到了,究竟发生了什么? - ryeguy
6个回答

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

你不需要使用邪恶的eval()函数来完成这个功能...


9
问题在于你将两个句号连接在一起:
  1. var d = "document."
  2. var str = d+"."+f...
你得到的字符串是: "document..frm.myButton.value;" 去掉其中一个句号就可以了。

甚至更好的方法是使用: alert(document.frm [elem.name] .value); 并且在函数中摆脱其他所有内容;。 - Rakesh Pai
1
我同意......但这似乎是为了让OP学习而设计的练习,所以我没有建议更好的替代方案。;-) - Cerebrus

1

更改

var d = "document."

var d = "document"

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


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

}

并将脚本放在更适当的位置,它不能是文档的子元素。 - SilentGhost
给原作者:请在所有代码前加上4个空格(选中代码,然后点击0101按钮),这样它将正确显示。如果您查看编辑窗口下方,您可以预览其外观。我已经为您编辑了此帖子。 - some

1

你也可以这样做:

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

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

0

在你的<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>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接