悬赏分:10 该问题已到期 浏览:165 次
string js;
js = "var shine;shine=parseFloat(document.all.Label1.innerText);document.getElementById('Label1').innerHTML=shine+0.5;";
ScriptManager.RegisterStartupScript(Button1, GetType(), "haohao", js, true);
放按钮下为什么只加一次0.5啊 有什么办法可以解决???
那位大哥帮帮我啊
|
没看明白你是什么意思
不过在网页中的确会有一种情况,连续点击只会触发一次事件 Register<b>Startup</b>Script 你说的情况主要是因为:Lable是服务器控件并不是HTML标记,而你用JavaScipt改变Lable中的值时其实并没有将正真Lable.Text的值改变,应为在载入页面时,页面中所有值及状态都被保存在页面的__VIEWSTATE中,当页面被submit后,所有的值都是从__VIEWSTATE中读取的,而Lable.Text的初始值是1,用JavaScript改变后的值是不会被保存到__VIEWSTATE中的,所以__VIEWSTATE中存储的Lable.Text的值永远都是1,因此无论你点击Button多少次,回发页面多少次,最终用JavaScript的计算过程永远是Lable.Text=1+0.5(得1.5),永远看到页面的结果是1.5。不知道我的解释你是否明白了?下面给你看看Aspx页面在运行后的源文件: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head><title>无标题页</title> </head> <body> <form name="form1" method="post" action="Default.aspx" id="form1"> <div><!--下面的input id="__VIEWSTATE"的标记中,其value中存储了本页中Lable1控件及其他控件的状态和值(包括Lable1.Text的值)--> <input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwULLTE4OTA2NDE5OTEPZBYCAgMPZBYCAgEPPCsADQIADxYGHgpEYXRhTWVtYmVyBQJkdB4LXyFEYXRhQm91bmRnHgtfIUl0ZW1Db3VudAIKZAwUKwADFggeBE5hbWUFAklEHgpJc1JlYWRPbmx5aB4EVHlwZRkrAR4JRGF0YUZpZWxkBQJJRBYIHwMFCeaWh+S7tuWQjR8EaB8FGSsCHwYFCeaWh+S7tuWQjRYIHwMFBui3r+W+hB8EaB8FGSsCHwYFBui3r+W+hBYCZg9kFhYCAQ9kFgYCAg8PFgIeBFRleHQFATFkZAIDDw8WAh8HBRnmtY/op4jkuIvovb3mtYvor5Xmlofku7YxZGQCBA8PFgIfBwUgYzpc5rWP6KeI5LiL6L295rWL6K+V5paH5Lu2MS5kb2NkZAICD2QWBgICDw8WAh8HBQEyZGQCAw8PFgIfBwUZ5rWP6KeI5LiL6L295rWL6K+V5paH5Lu2MmRkAgQPDxYCHwcFIGM6XOa1j+iniOS4i+i9vea1i+ivleaWh+S7tjIuZG9jZGQCAw9kFgYCAg8PFgIfBwUBM2RkAgMPDxYCHwcFGea1j+iniOS4i+i9vea1i+ivleaWh+S7tjNkZAIEDw8WAh8HBSBjOlzmtY/op4jkuIvovb3mtYvor5Xmlofku7YzLmRvY2RkAgQPZBYGAgIPDxYCHwcFATRkZAIDDw8WAh8HBRnmtY/op4jkuIvovb3mtYvor5Xmlofku7Y0ZGQCBA8PFgIfBwUgYzpc5rWP6KeI5LiL6L295rWL6K+V5paH5Lu2NC5kb2NkZAIFD2QWBgICDw8WAh8HBQE1ZGQCAw8PFgIfBwUZ5rWP6KeI5LiL6L295rWL6K+V5paH5Lu2NWRkAgQPDxYCHwcFIGM6XOa1j+iniOS4i+i9vea1i+ivleaWh+S7tjUuZG9jZGQCBg9kFgYCAg8PFgIfBwUBNmRkAgMPDxYCHwcFGea1j+iniOS4i+i9vea1i+ivleaWh <!--当工程运行时,服务器控件Lable1在源文件中的标记--> <span id="Label1">1</span> <!--当工程运行时,服务器控件Button1在源文件中的标记--> <input type="submit" name="Button1" value="Button" id="Button1" /> <!--下面div和JavaScript都是工程运行后,Asp.Net向页面添加的内容,非程序员自己编写的代码--> <div> <input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" /> <input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="" /> <input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="/wEWGgLmrd3DAQK7qs/zCwKDqYO1AwK7qqOXAwKDqb+1AwK7quepBQKDqbu1AwK7qvvMAgKDqbe1AwK7qr/fBAKDqZO1AwK7qpOCDAKDqY+1AwK7qteUBgKDqYu1AwK7qqu4DwKDqYe1AwK7qq+ZDAKDqeO1AwK7qoO8BQKDqZ+1AwKM54rGBgLs0bLrBgLs0fbZDALs0Yq1BQLs0e58tWtGtdOddenELzfZAUrQnMiVaIs=" /> </div> <script type="text/javascript"> //<![CDATA[ var theForm = document.forms['form1']; if (!theForm) { theForm = document.form1; } function __doPostBack(eventTarget, eventArgument) { if (!theForm.onsubmit || (theForm.onsubmit() != false)) { theForm.__EVENTTARGET.value = eventTarget; theForm.__EVENTARGUMENT.value = eventArgument; theForm.submit(); } } //]]> </script> </form> </body> </html> 个人给你的问题的建议和解决方法: 1、如果你的目的并不是要在服务器端用到服务器控件Lable1中的Text值(比如并不想将变化的值存入数据库),Button1也没有其他服务器端可作的事情,而只是改变Lable1的值,那么我建议你还是将服务器控件Lable1和Button1都换成html标记控件,在将你问题中写的JavaScript写到客户端中去,而不要只想着从后台的服务器端向客户端去写。 2、如果你需要在后台服务器端用到Lable1.Text的值,那么请不要用JavaScript去改变而是直接在后台的CS源码文件中的某个事件,用下面的语句去计算,来改变Lable1.Text的值:Label1.Text = Convert.ToString(Convert.ToDouble(Label1.Text) + 0.5); 不知道是否能解决您的问题。 |
|
2周前 浩浩 : 我是想循环为Label1加0.5 如果我开始为Label1设置为1 点下按妞Label1变为1.5 在点下后还是1.5 我看了服务器端代码 Label1始终是1 不知道怎么办了 |
|
2周前 浩浩 : Register<b>Startup</b>Script 什么意思啊? |
|
2周前 浩浩 : 嘿嘿 谢谢你了 估计我想法有点问题 我试这换个方法了 哈哈 |
|
2周前 刚刚 : 不客气,该结贴了吗? |