javascript警报无法正常工作

时间:2011-08-17 06:36:29

标签: c# javascript visual-studio-2010

我有这个代码,我试图在.NET平台上运行它,但它无法正常工作。有谁知道我的代码有什么问题?谢谢。我正在使用visual studio 2010和c#编程语言。

private void AlertWithConfirmation()
            {
                Response.Write("<script language='javascript'>");
                Response.Write("var x=window.confirm(\"Are you sure you are ok?\")");
                Response.Write("if (x)");
                Response.Write("window.alert(\"Good!\")");
                Response.Write("else");
                Response.Write("window.alert(\"Too bad\")");
                Response.Write("</script>");
            }

4 个答案:

答案 0 :(得分:3)

您的代码产生了这个:

<script language='javascript'>var x=window.confirm("Are you sure you are ok?")if (x)window.alert("Good!")elsewindow.alert("Too bad")</script>

请注意命令之间缺少分隔符的elsewindow标识符,当然不存在。它会导致错误,因为未定义的值没有alert方法。

一些改进:

  • 使用type属性而不是已弃用的langauge属性。
  • 在语句末尾使用分号。
  • 在代码块周围使用括号(例如,跟随if)。
  • 直接使用confirm的返回值,而不是使用变量污染全局命名空间。
  • 将其写为单个字符串而不是一串字符串。

private void AlertWithConfirmation() {
  Response.Write(
    "<script type=\"text/javascript\">" +
    "if (window.confirm('Are you sure you are ok?')) {" +
    "window.alert('Good!');" +
    "} else {" +
    "window.alert('Too bad');" +
    "}" + 
    "</script>"
  );
}

请注意,如果您在常规页面中使用它,它将在doctype标记之前编写脚本标记,这将导致浏览器进入怪异模式,这很可能会破坏您的布局。如果要将脚本添加到常规页面,则应在可以添加脚本的页面上添加PlaceHolder,或使用ClientScriptManager.RegisterStartupScript方法。

答案 1 :(得分:1)

确保Response.Write的结果如下所示:

<script type="text/javascript">
    var x=window.confirm('Are you sure you are ok?');
    if (x) {
        window.alert('Good!');
    } else {
        window.alert('Too bad');
    }

</script>

答案 2 :(得分:1)

aspx页面生成的HTML在渲染阶段呈现,该阶段处于页面生命周期的末尾。

因此,如果您在页面生命周期的早期调用Response.Write,它将在第一个标记之前的页面开头输出 - 几乎肯定不是您想要的。

如果您检查生成的HTML(在浏览器中查看源代码),您会看到这一点。

通常,如果要渲染一些javascript,则应使用其他一些技巧,例如在页面中的适当位置设置Literal控件的Text属性。

答案 3 :(得分:1)

你已经在24小时内问了两个类似的问题。你必须有耐心。

how to use javascript alert so that user can choose

Javascript alert problem

相关问题