为什么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>
答案 0 :(得分:13)
function drvFunc(elem) {
alert(elem.value);
}
这个函数你不需要邪恶的eval()......
答案 1 :(得分:9)
问题是你有两个句号连接:
var d = "document."
var str = d+"."+f...
结果字符串变为:"document..frm.myButton.value;"
删除其中一个句点,它会起作用。
答案 2 :(得分:1)
更改
var d = "document."
到
var d = "document"
您正在使用“document..frm”运行eval
答案 3 :(得分: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)
{
}
答案 4 :(得分:1)
<input type='button' name='2ndButton' id='2ndButton' onclick='drvFunc(this.id)'>
function drvFunc(elemid){
alert(document.getElementById(elemid).value);
}
答案 5 :(得分: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>