-2

无论出于何种原因,我都无法让以下代码在 IE9 中运行,但它可以在 Firefox、Chrome 和 Opera 中运行:

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Laughing Man Productions²-Administrator Portal</title>

<!--[if !IE 9]> <!--><link rel="stylesheet" type="text/css" href="http://www.lmpgames.com/WEB401/W2/css/login_page.css"/><!--<![endif]-->

<!--[if IE 9]>
<link rel="stylesheet" type="text/css" href="http://www.lmpgames.com/WEB401/W2/css/login_page_IE.css"/>
<![endif]-->


</head>

<body>
<div class="login_bg">
  <form action="" method="post" enctype="multipart/form-data">
    <fieldset class="fset">
      <div class="username_text">
        Username/Email Address:
          <span class="username_field">
            <input name="txtbUName" type="text" style="background-color:#DDDDDD;" value="Username" size="20" maxlength="60" />
          </span>
      </div><br/>

      <div class="password_text">
        Password:
          <span class="password_field">
            <input name="txtbPWord" type="password" style="background-color:#DDDDDD;" value="Password" size="20" maxlength="16" />
          </span>
      </div><br/>

      <div class="sub">
        <input name="btnSubmit" type="button" onclick="formatUName(this.form)" value="Submit" />
      </div>

      <textarea name="txtaFOutput" class="txta" cols="1" rows="1">

      </textarea>  
    </fieldset>
  </form>
  </div>



<script type="application/javascript">
    function formatUName(form)
    {
        //Set up variables and references for use later on
        var button = form.btnSubmit;
        var txta = form.txtaFOutput;
        var username = form.txtbUName;
        var password = form.txtbPWord;
        var uName = "default";
        var pWord = "";

        uName = username.value; //Obtain the value of the username field on submit

        //Then remove spaces from the value and change all letters to uppercase
        uName = uName.replace(/\s+/g, '');      
        uName = uName.toUpperCase();

        //Finally print the formatted username to the textarea
        txta.value = uName + " is your username";       
    }
</script>  


</body>     
</html>

当我在 IE 中加载页面并单击提交时,没有任何反应。我尝试将 .value 更改为 innerHTML 和 innerText 但它们都不能在 IE 中工作。

编辑:

在摆弄 IE 之后,我终于设法让调试运行,它吐出了这个错误:

行:23 错误:无法获取属性“appendChild”的值:对象为空或未定义

编辑2:

忽略前面的错误。IE 允许 Vuze 通过我不知道 Vuze 安装的插件注入 Javascript 代码。禁用它们,现在新的错误消息是关于我的函数名称的:

第 35 行:属性“formatUName”的值为 null 或未定义,不是 Function 对象

4

3 回答 3

1

当我在 IE 中运行它时,JavaScript 工作正常,但表单没有提交。如果这是您面临的问题,原因是:

<input name="btnSubmit" type="button" onclick="formatUName(this.form)" value="Submit" />

更改type="button"type="submit"type="button"当您的表单缺少显式提交按钮时,浏览器行为是不可预测的。

于 2013-07-07T23:45:54.463 回答
0

多个答案都有拼图。起初,我遇到的错误是由于 IE 允许将 Conduit Javascript 注入我所有网页的 Vuze 插件。第二个错误是 Internet Explorer 本身就是无缘无故的窃听器。

在测试代​​码开始工作时停止响应后重新启动IE后,几乎。仍然有一个问题,这是由 Nathaniel 建议将 btnSubmit 从一种按钮类型更改为一种提交类型引起的。这导致我所有浏览器中的代码停止工作;文本区域不会正确更新其值。

将类型更改回按钮后,代码可在所有经过测试的浏览器中运行:IE9/Firefox 18.1/Opera 12.15/Chrome 28。

于 2013-07-08T00:52:31.400 回答
0

在 HTML 中,<!-- comment -->注释的正确语法是正确的。

另一方面,Javascript 使用 ANSI C 标准注释,// comment/* comment */.

你需要改变:

function formatUName(form)
{
    <!-->Set up variables and references for use later on
    var button = form.btnSubmit;
    var txta = form.txtaFOutput;
    var username = form.txtbUName;
    var password = form.txtbPWord;
    var uName = "default";
    var pWord = "";

    uName = username.value; <!--> Obtain the value of the username field on submit

    <!--> Then remove spaces from the value and change all letters to uppercase
    uName = uName.replace(/\s+/g, '');      
    uName = uName.toUpperCase();

    <!--> Finally print the formatted username to the textarea
    txta.value = uName + " is your username";
}

至:

function formatUName(form)
{
    // Set up variables and references for use later on
    var button = form.btnSubmit;
    var txta = form.txtaFOutput;
    var username = form.txtbUName;
    var password = form.txtbPWord;
    var uName = "default";
    var pWord = "";

    uName = username.value; // Obtain the value of the username field on submit

    // Then remove spaces from the value and change all letters to uppercase
    uName = uName.replace(/\s+/g, '');      
    uName = uName.toUpperCase();

    // Finally print the formatted username to the textarea
    txta.value = uName + " is your username";
}
于 2013-07-07T23:47:26.663 回答