从 .ascx 文件调用 Javascript 函数

本文关键字:Javascript 函数 调用 文件 ascx | 更新日期: 2023-09-27 18:30:45


我有一个名为"change2()"的javascript函数,它在.ascx页面的脚本标签中定义。
我想从 img 标签的 onclick 事件调用该函数(注意:img 标签也在同一页面上)。
必须仅对图像使用 img 标签。
我尝试了以下所有方法,但不幸的是它对我不起作用。

Test.ascx

    <script language="javascript" type="text/javascript">
        function change2() {
            alert("Hi");
        } 
    </script>


  <table>
        <tr>
          <td class="list">
               Most liked
          </td>
          <td>
              <img id="imgLkU" src='<%# WebHelper.GetBaseURL(Request) + "/images/slide_btn_down.png"%>'class="icon_right_panel" runat="server" onclick="change2();" alt="Slider" />
           </td>
          </tr>
     </table>

第二种方式 :

<table>
            <tr>
              <td class="list">
                   Most liked
              </td>
              <td>
                  <a href="#" onclick="change2();"><img id="imgLkU" src='<%# WebHelper.GetBaseURL(Request) + "/images/slide_btn_down.png"%>'class="icon_right_panel" runat="server"  alt="Slider" /></a>
               </td>
              </tr>
         </table>

请给我你的建议,从同一页面调用javascript函数。

从 .ascx 文件调用 Javascript 函数

如我所见,img id 是 imgLkU ,因此,您可以"从外部"订阅事件,而不是将调用包含在 img 标签本身中,即像使用 $.on(或 $.click)一样这样做:

$.on('click','#imgLkU', function() { change2(); });
// or equivalent  $.on('click','#imgLkU', change2);

$.('#imgLkU').click(function() { change2(); });
// or equivalent $.('#imgLkU').click(change2);

在同一脚本标记中定义change2后立即执行此操作。

我还建议您在即时调用的函数表达式中执行change2定义和事件订阅,以避免污染全局 javascript 命名空间。

(function() { 
   // define and subscribe here
 })();

因为你的元素都有runat="server",所以它们的onclick属性是为后端代码动作侦听器保留的,该监听器将在回发时执行。

保留 onClientClick 属性是为了允许您仍然将 JavaScript"侦听器"附加到被视为客户端onclick的内容。

请记住,如果还挂接了onclick侦听器,则从onClientClick处理程序返回false将阻止发生回发。(onClientclick在启动回发之前执行)

试试这个:

<img id="imgLkU" src='<%# WebHelper.GetBaseURL(Request) + "/images/slide_btn_down.png"%>'class="icon_right_panel" runat="server" onclientclick="change2();" alt="Slider" />

以下函数可以直接从document.ready函数调用,例如

$(function () {
    $('#imgLkU').click(function () {
        //do what ever you want
    })
});

首先,取出图像上的runat="server",因为您已经在使用服务器标签来设置 url。如果您仍想使用 runat="server" ,您可以:

1:将您的 img 更改为 <asp:Image> 标签并使用 ImageSource 而不是 srcOnClientClick 而不是 onclick

2:在代码隐藏中设置 src 属性。

之后,任何点击方法 - 从您的问题到所有答案 - 都应该有效。

如果仍然没有显示警报,请开始取出代码,直到它出现并从那里开始工作......