javascript新手,但我的函数在firefox中工作错误

javascript新手,但我的函数在firefox中工作错误,javascript,javascript-events,Javascript,Javascript Events,我刚刚开始接触javascript,目前为止我很喜欢它背后的逻辑,但我对Firefox有一个问题。基本上,我是从php函数中生成javascript的,它是一个不安全的pin码身份验证脚本 因此,my php创建了一个调用,该调用传递包含的变量pin number,当调用时,会打开一个带有pinpad的模式弹出窗口,用户输入4位数字,pinpad onclick函数将这些数字添加到密码字段中,并在单击4次后将其与pinpad表单上的隐藏字段进行比较,如果匹配,则调用另一个生成的函数来完成成功操作

我刚刚开始接触javascript,目前为止我很喜欢它背后的逻辑,但我对Firefox有一个问题。基本上,我是从php函数中生成javascript的,它是一个不安全的pin码身份验证脚本

因此,my php创建了一个调用,该调用传递包含的变量pin number,当调用时,会打开一个带有pinpad的模式弹出窗口,用户输入4位数字,pinpad onclick函数将这些数字添加到密码字段中,并在单击4次后将其与pinpad表单上的隐藏字段进行比较,如果匹配,则调用另一个生成的函数来完成成功操作;如果没有匹配的pinpad框架变为红色,并且启用了旁路按钮,则可以重试

这一切在Chrome、Opera甚至IE中都可以正常工作,但在Firefox中,它会在4位数字后调用success函数,即使它们与pin字段不匹配

为什么会这样?下面是函数,但请记住我是新的,所以它可能写得更好

function add(text) {
    var TheTextBox = document.pinform.elements['pin'];
    var pincheckbox = document.pinform.elements['pincheck'];
    var sidbox = document.pinform.elements['sid'];
    TheTextBox.value = TheTextBox.value + text;
    if (TheTextBox.value.length == 4) {
        if (pinform.pin.value == pinform.pincheck.value) {
            var pinn = document.getElementById('sid').value;
            eval('pinpass' + pinn + '();');
        } else {
            document.getElementById("bypass").innerHTML = "Bypass";
            document.getElementById("bypass").disabled = false;
            document.getElementById("calc").style.backgroundColor = 'red';
            TheTextBox.value = '';
            return false;
        }
    }
}

像往常一样,通过反复试验找到了答案。 我需要添加文档。在pinform.pincheck.value和pinform.pin.value前面

谢谢你提供的帮助。 尼克


为什么要转义某些引号?每当看到eval时,请返回原始任务。但这可能是另一个问题。请在发布问题之前验证您的语法。Check or.Nit:如果它只是无效语法,那么它在IE/chrome中也不起作用,尽管它可能是隐藏行为的缓存怪癖。我怀疑它来自PHP字符串或其他,但是。。缺少上下文。您可以替换eval'pinpass'+pinn+';';带窗['pinpass'+pinn];,这将使代码更高效,并避免一些可能的可怕的代码注入漏洞,尽管您可能应该进行更多的重构,以避免使用此漏洞。
if (TheTextBox.value.length == 4) {
    if (doucment.pinform.pin.value == document.pinform.pincheck.value) {
        var pinn = document.getElementById('sid').value;
        eval('pinpass' + pinn + '();');
    } else {