请真正懂ASP。NET和JAVASCRIPT的朋友看一下

liubing842178 2009-07-10 11:40:52
<script type="text/javascript">
function count()
{
var i=document.getElementById("shopprice").value;
var j=document.getElementById("countedit").value;
var x=i*j;
document.getElementById("total").value=x;
}
</script>

<asp:DataList ID="DataList9" runat="server" OnItemCommand="DataList9_ItemCommand">
<HeaderTemplate> <table> <tr> <td>商品名称 </td> <td>单价 </td> <td>总价 </td> <td>数量 </td> </tr> </HeaderTemplate>
<ItemTemplate>
<tr> <td>
<asp:Label ID="shopname" runat="server" Text=' <%#Eval("shopname") %>'> </asp:Label> </td>
<td> <asp:Label ID="shopprice" runat="server" Text=' <%#Eval("shopprice") %>'> </asp:Label> </td>
<td> <asp:TextBox ID="countedit" runat="server" Text=' <%#Eval("shopnum")%>' onblur="count();"> </asp:TextBox> </td>
<td> <asp:label ID="total" runat="server" Text=' <%#Eval("shopprice") %>'> </asp:label> </td> <td> <asp:LinkButton ID="update" runat="server" CommandName="update" CommandArgument=' <%#Eval("shopid") %>' Text="确认"> </asp:LinkButton> </td>
<td> <asp:LinkButton ID="delete" runat="server" CommandName="delete" Text="删除" CommandArgument=' <%#Eval("shopid") %>'> </asp:LinkButton> </td>
</tr>
</ItemTemplate>
<FooterTemplate> </table> </FooterTemplate>
</asp:DataList>

想实现的是TextBOX里输入完数量之后,后面自动显示总价,但是我写的代码运行没有成功,JAVASCRIPT不大熟悉,getElementById(" ")后的value点不出来是我自己写上去的,现在我知道模板列内
var j=document.getElementById("countedit").value;这么写是取不到对象,但是就是不知道该怎样写,请真正懂ASP。NET和
JAVASCRIPT的高手帮忙看一下,最好能根据我的代码写个例子,谢谢
...全文
72 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
wuyq11 2009-07-10
  • 打赏
  • 举报
回复
datalist里不能通过document.getElementById取值
var inputs = document.getElementById("<%=DataList1.ClientID%>").getElementsByTagName("input");

for(var i=0;i<inputs;i++){

}
取值字段值,再赋值

liubing842178 2009-07-10
  • 打赏
  • 举报
回复
请高手帮忙,急啊~~~
liubing842178 2009-07-10
  • 打赏
  • 举报
回复
var i=document.getElementById('<%=shopprice.ClientID%>').innertext;我就是这么写的

运行显示
当前上下文中不存在名称“shopprice”
liubing842178 2009-07-10
  • 打赏
  • 举报
回复
名称没问题啊, <td> <asp:Label ID="shopprice" runat="server" Text=' <%#Eval("shopprice") %>'> </asp:Label> </td>
<td> <asp:TextBox ID="countedit" runat="server" Text=' <%#Eval("shopnum")%>' onblur="count();"> </asp:TextBox> </td>
zzxap 2009-07-10
  • 打赏
  • 举报
回复
document.getElementById("shopprice").innertext

不存在就检查一下名称
liubing842178 2009-07-10
  • 打赏
  • 举报
回复
把var i=document.getElementById("shopprice").value; 改成
var i=document.getElementById(' <%=shopprice.ClientID%>').innertext;运行显示
当前上下文中不存在名称“shopprice”
welcomechenqi 2009-07-10
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 zzxap 的回复:]
var i=document.getElementById(' <%=shopprice.ClientID%>').innertext;
[/Quote]

zzxap 2009-07-10
  • 打赏
  • 举报
回复
var i=document.getElementById(' <%=shopprice.ClientID%>').innertext;
powerllr 2009-07-10
  • 打赏
  • 举报
回复
var i=document.getElementById('<%=shopprice.ClientID%>').value;

试试这样行不? 如果不行,可以点查看源码,就会发现
shopprice前面加上了DataList的名称,将源码里面的名称放入js里面就可以了
zdl110110 2009-07-10
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 wuyq11 的回复:]
datalist里不能通过document.getElementById取值
var inputs = document.getElementById(" <%=DataList1.ClientID%>").getElementsByTagName("input");

for(var i=0;i <inputs;i++){

}
取值字段值,再赋值


[/Quote]

这个方法不错
BernardSun 2009-07-10
  • 打赏
  • 举报
回复

function count()
{
var obj = event.srcElement;

while (obj.tagName != "TD") {
obj = obj.parentElement;
}
var row = obj.parentElement;

var i = row.cells[1].firstChild.innerHTML;
var j = row.cells[2].firstChild.value;
var x = parseInt(i) * parseInt(j);
row.cells[3].firstChild.innerHTML = x;
}

不懂的人乱写的
yangshenghong 2009-07-10
  • 打赏
  • 举报
回复
看一下源文件中是不是有这个控件的ID,再调试
离子漂浮物 2009-07-10
  • 打赏
  • 举报
回复
其实呢,你的js没什么对的,不对的地方就是DataList这类控件其包含的服务器控件的ID上加上点什么来区分这个控件是属于哪个DataList的哪个单元格,如果你直接查看运行后的HTML你会发现countedit的ID号其实是DataList9_ctl00_countedit .... DataList9_ctl99_countedit....等等。
游北亮 2009-07-10
  • 打赏
  • 举报
回复
楼主不是发过一帖了吗?
http://topic.csdn.net/u/20090710/11/9309440d-b8b0-4ff0-819b-71e59c5b6516.html

直接用previousSibling和nextSibling
就可以取前后对象了
离子漂浮物 2009-07-10
  • 打赏
  • 举报
回复
把你的count函数改成下面这个。

function count(serverIdName, clientName)
{
var nameSource = serverIdName.replace(clientName, "");
var i = document.getElementById(nameSource + "shopprice").value;
var j = document.getElementById(nameSource + "countedit").value;
var x = i*j;
document.getElementById(nameSource + "total").value = x;
}


然后把:
<td> <asp:TextBox ID="countedit" runat="server" Text=' <%#Eval("shopnum")%>' onblur="count();"> </asp:TextBox> </td> 
改成
<td> <asp:TextBox ID="countedit" runat="server" Text=' <%#Eval("shopnum")%>' onblur="count(this.id, 'countedit');"> </asp:TextBox> </td> 


就应该可以搞定了

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧