【问题标题】:This script display none does not work on chrome此脚本显示无不适用于 chrome
【发布时间】:2012-10-17 13:27:22
【问题描述】:

我有一个页面,用户必须在其中检查单选按钮 - 如果他是新用户,他会被重定向到不同的页面。

如果他是现有用户并选中此按钮,则会出现 2 个框:usernamepassword

由于某种原因,此脚本不适用于 chrome。

感谢您的帮助

<script>
    function dispLoing(val)
    {
        var obj = document.getElementById ? 
                     document.getElementById("loginForm").style :
                     document.all ?
                         document.all.loginForm :
                         document.loginForm;

        if (val == "new")
        {
            document.all.login(0).checked = true;
            obj.display = "none";
        }

        if (val == "existing")
        {
            document.all.login(1).checked = true;
            obj.display = "";
        }
    }
</script>

<td>
    <span id = "loginForm" style = "position: relative; top: 0px; left: 0px;
                                    z-index:80; display:none;">
        <table border=0>
            <tr>
                <td>
                    <font style = "font-size: 14px">Username:</font>
                </td>
                <td>
                    <input type = "text" name = "username" 
                          style = "width: 100px; height:17px; font-size: 12px;">
                </td>
            </tr>
            <tr>
                <td>
                    <font style = "font-size: 14px">Password:</font>
                </td>
                <td>
                    <input type = "password" name = "pass"
                          style = "width: 100px; height: 17px; font-size: 12px;">
                </td>
            </tr>
        </table>
    </span>

【问题讨论】:

  • 你为什么不用jquery,那样会容易很多。
  • 你为什么要去document.all附近的任何地方?是否需要支持 Internet Explorer 4?
  • dispLoing() 在哪里调用?
  • 这看起来不像你的所有代码。注释掉丢失的位。为我在 Chrome 中工作 -- jsfiddle.net/qLpe9(也将 span 替换为 div,尽管任何一种方式都无关紧要)。
  • 它在 div 之前,我已将其更改为 span。

标签: javascript html css webforms


【解决方案1】:

document.all 是 Microsoft 专有的垃圾,仅当您需要支持 IE 4 时才有用。现在可以安全地假设支持 document.getElementById

当您分配obj 时,您会在尝试使用它之前测试它是否存在。

在你的两个if 语句中,你盲目地使用它。这会导致脚本在到达obj.display 行之前终止。

function dispLoing(val) {
    var frm = document.getElementById("loginForm");
    var radios = frm.elements.login;
    if (val === "new") {
        radios[0].checked = true;
        frm.style.display = "none";
    } else if (val === "existing") {
        radios[1].checked = true;
        frm.style.display = "";
    }
}

【讨论】:

  • 现在我无法在 Internet Explorer 上显示现有成员的用户名和密码。
猜你喜欢
  • 2015-04-14
  • 1970-01-01
  • 2016-02-24
  • 1970-01-01
  • 2017-08-05
  • 2016-02-03
  • 2011-09-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多