【问题标题】:Why won't my JavaScript work in a ASP.net web form?为什么我的 JavaScript 不能在 ASP.net Web 表单中工作?
【发布时间】:2015-04-01 12:07:07
【问题描述】:

将代码作为 HTML 页面运行没有问题。现在,在 Web 表单中,转换器什么也不做。试图将其从 HTML 迁移到 Web 表单页面以使用母版页和主题。

<asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server">
 <script lang="javascript" type="text/javascript">
    //Convert Logic
    function CelsiusConvert() {
        document.converter.fahrenheit.value = (document.converter.celsius.value * 9 / 5) + 32
        document.converter.kelvin.value = document.converter.celsius.value * 1 + 273.15
    }
    function FahrenheitConvert() {
        document.converter.celsius.value = (document.converter.fahrenheit.value - 32) * 5 / 9
        document.converter.kelvin.value = ((document.converter.fahrenheit.value - 32) * 5 / 9) + 273.15
    }
    function KelvinConvert() {
        document.converter.celsius.value = document.converter.kelvin.value - 273.15
        document.converter.fahrenheit.value =   ((document.converter.kelvin.value - 273.15) * 9 / 5) + 32
    }
 </script>
</asp:Content>

 <asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
   <form name="converter">
       <!--Input Fields-->
       Celsius:
        <input type="text" name="celsius" onchange="CelsiusConvert()"/><br />
       Fahrenheit:
        <input type="text" name="fahrenheit" onchange="FahrenheitConvert()"/><br />
       Kelvin:
        <input type="text" name="kelvin" onchange="KelvinConvert()"/><br />
       <!--Convert Button-->
        <input type="button" value="Convert!" />
   </form>
   </asp:Content>

【问题讨论】:

  • 请阅读“How do I ask a good question”然后改进您的问题。
  • 尝试删除form标签并检查
  • 您遇到的具体问题是什么?
  • 为什么人们还在使用网络表单?这是您正在维护的遗留系统吗?
  • 您应该尝试将脚本放在 MasterPage 的底部。因为首先加载 MasterPage,然后加载内容页面。

标签: javascript c# asp.net visual-studio


【解决方案1】:

Webforms 保留&lt;form&gt; 标签,以便它可以管理回发并将信息取回。

首先,您不应该使用&lt;form&gt; 标签,您可以将它们松散地放在页面中。

要获取它们,您应该给它们id's 并使用 document.getElementById 来访问它们(或使用 jQuery)。

顺便说一句,我不认为访问表单的方法是跨浏览器兼容的,但这与 WebForms 无关,因为无论如何你都在删除它。

所以是这样的:

<asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server">
 <script lang="javascript" type="text/javascript">
    //Convert Logic
    function CelsiusConvert() {
        document.getElementById("fahrenheit").value = (document.getElementById("celsius").value * 9 / 5) + 32
        document.getElementById("kelvin").value = document.getElementById("celsius").value * 1 + 273.15
    }
    function FahrenheitConvert() {
        document.getElementById("celsius").value = (document.getElementById("fahrenheit").value - 32) * 5 / 9
        document.getElementById("kelvin").value = ((document.getElementById("fahrenheit").value - 32) * 5 / 9) + 273.15
    }
    function KelvinConvert() {
        document.getElementById("celsius").value = document.getElementById("kelvin").value - 273.15
        document.getElementById("fahrenheit").value =   ((document.getElementById("kelvin").value - 273.15) * 9 / 5) + 32
    }
 </script>
</asp:Content>

 <asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
   <div>
       <!--Input Fields-->
       Celsius:
        <input type="text" name="celsius" id="celsius" onchange="CelsiusConvert()"/><br />
       Fahrenheit:
        <input type="text" name="fahrenheit" id="fahrenheit" onchange="FahrenheitConvert()"/><br />
       Kelvin:
        <input type="text" name="kelvin" id="kelvin" onchange="KelvinConvert()"/><br />
       <!--Convert Button-->
        <input type="button" value="Convert!" />
   </div>
   </asp:Content>

我并不是说这是很棒的 JavaScript 代码,但如果您只是想让它工作,那么您可以继续从中学习,这应该可以解决问题。

【讨论】:

    【解决方案2】:

    添加

    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"> 
    

    会有用的

    【讨论】:

      【解决方案3】:

      删除 type 和 lang 属性并仅使用:

      <script>
      // Code
      </script>
      

      另一种方法,创建一个外部 JS 脚本并用例如这个来实现它:

      <script type="text/javascript" src="/js/custom.js"></script>
      

      【讨论】:

      • 它也适用于typelang atttibute,OP 代码中的主要问题是表单标签,这就是javascript代码不起作用的原因
      猜你喜欢
      • 1970-01-01
      • 2016-03-21
      • 2017-08-29
      • 2021-10-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多