为啥div里的onclick()事件不起作用?不会jq
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为啥div里的onclick()事件不起作用?不会jq相关的知识,希望对你有一定的参考价值。
参考技术A 二步:1、测试changval()函数的内部第一句添加个alert(123);判断是否进入函数
2、jq的写法,你改了一下测试:
var test = $("#zhandian").text();
console.log(test);//Firebug console追问
我不会jq,我是想你用js回答
我alert没用,怎么办
追答说明函数没调用呗,你把代码copy出来测试,把没用的全删掉,全测一下onclick为啥没调用changeVal,changeColor那些mouseover先删掉,测一下再添上,两下就找出来原因了。那两个color函数要返回false
本回答被提问者和网友采纳为啥 C# 的 onClick 事件在表标签的 <td> 中不起作用
【中文标题】为啥 C# 的 onClick 事件在表标签的 <td> 中不起作用【英文标题】:why onClick Event of C# not working in <td> of table tag为什么 C# 的 onClick 事件在表标签的 <td> 中不起作用 【发布时间】:2017-10-28 01:11:45 【问题描述】:我正在尝试通过连接字符串在标记中动态生成 onClick 事件并获得我想要的结果,但是当我单击元素时,事件不起作用。我认为这可能不支持 onClick 事件并尝试了其他方法,例如将 onClick 放入等,但没有任何效果。请在这里帮助我。
我的html代码:
<table class="downloadTable">
<tr>
<th class="sn">SN</th>
<th class="assi">Notes Title</th>
<th class="pby">Subject</th>
<th class="ld">Posted by</th>
<th class="dp">Posted date</th>
</tr><%=getNotesData()%>
</table>
我的 C# 编码:
public string getAssignmentData()
string data = "";
string CS = ConfigurationManager.ConnectionStrings["_logdb"].ConnectionString;
using (SqlConnection conn = new SqlConnection(CS))
string query = "Select * from _tbNotes";
SqlCommand comm = new SqlCommand(query, conn);
conn.Open();
using (SqlDataReader drd = comm.ExecuteReader())
if (drd.HasRows)
while (drd.Read())
int id = 1;
string title = drd.GetString(1);
string sub = drd.GetString(2);
string auth = drd.GetString(3);
data += "<tr OnClick=\"_storeDetails(4)\"><td>" + id + "</td><td>" + title + "</td><td>" + sub + "</td><td>" + auth + "</td></tr>";
id++;
return data;
我调用 onClick() 的函数
protected void _storeDetails(int uid)
Session["AssignmentNo"] = uid;
Response.Redirect("~/ViewAssignment.aspx");
生成的浏览器代码:
<table class="massi tb">
<tbody>
<tr>
<th class="sn">SN</th>
<th class="assi">Assignment Title</th>
<th class="pby">Posted By</th>
<th class="pd">Post Date</th>
<th class="ld">Last Submit Date</th>
</tr>
<tr onclick="_storeDetails(4)">
<td>1</td>
<td>Java assignment 1</td>
<td>java</td>
<td>tanvi</td>
</tr>
<tr onclick="_storeDetails(4)">
<td>1</td>
<td>vector graphics</td>
<td>web development</td>
<td>pandey</td>
</tr>
<tr onclick="_storeDetails(4)">
<td>1</td>
<td>Advance java assignment 2</td>
<td>Advance Java</td>
<td>Tenvi Gautam</td>
</tr>
<tr>
<td>1</td>
<td onclick="_storeDetails">Java assignment 1</td>
<td>java</td>
<td>tanvi</td>
</tr>
</tbody>
请帮助我我在这里做错了什么。另外,如果您做同样的工作有任何替代方法,请告诉我。
【问题讨论】:
【参考方案1】:这行不通,因为:
<tr onclick="_storeDetails(4)">
表示在客户端调用函数_storeDetails
。因此,该函数必须是 javascript 函数。
您的storeDetails
是服务器端的一种方法。你需要这样做:
<tr onclick="javascript:__doPostBack('_storeDetails','4');">
那么在服务器端,你需要这段代码:
if (this.IsPostBack)
if (Request["__EVENTTARGET"] == "_storeDetails")
// This can fail if you pass a value which is not an integer
// You can use TryParse instead if you want.
int param = int.Parse(Request["__EVENTARGUMENT"]);
_storeDetails(param);
【讨论】:
【参考方案2】:您正在尝试从客户端代码调用服务器端函数,在您的示例中这不起作用。您有几个选择:
执行回发并将所需控件设置为源。您需要创建一个客户端javascript函数:
<tr onclick="_storeDetails(4)">
<script type="text/javascript">
function _storeDetails(parameter)
__doPostBack('_storeDetailsClick', parameter)
</script>
然后您可以在 Page_Load() 中处理回发。
使用网络方法:
[WebMethod]
public static void StoreDetails(int uid)
用 JavaScript 调用它:
PageMethods.SetName(parameterValue, onSuccess, onFail);
你需要初始化页面方法:
<asp:ScriptManager ID="ScriptMgr" runat="server" EnablePageMethods="true"></asp:ScriptManager>
全部在客户端进行。当然,这取决于您对发布的数据所做的工作。
【讨论】:
以上是关于为啥div里的onclick()事件不起作用?不会jq的主要内容,如果未能解决你的问题,请参考以下文章
为啥我的“onclick()”事件在 Angular 中不起作用?
为啥 C# 的 onClick 事件在表标签的 <td> 中不起作用