从 .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函数。
如我所见,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
而不是 src
和 OnClientClick
而不是 onclick
。
2:在代码隐藏中设置 src
属性。
之后,任何点击方法 - 从您的问题到所有答案 - 都应该有效。
如果仍然没有显示警报,请开始取出代码,直到它出现并从那里开始工作......