页面刷新后,用js在客户端更改的服务器端label控件生成的span的innerHTML值丢失

btniuniu 2008-12-07 06:45:06
我的页面上有一个服务器端的label控件和一个textbox控件,当textbox失去焦点时,在客户端我用js的公式计算出一个值,并赋值给由document.getElementById("<% =Label1.ClientID %>")获取的label的innerHTML属性,但是当页面刷新后,label的值就没了,请高手指教,怎么样能保留住计算后label的值,多谢啦!
...全文
337 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
amandag 2008-12-08
  • 打赏
  • 举报
回复
当页面刷新后
==
是点击当前页面的某个按钮刷新页面么?可以写这个按钮的客户端事件,将span标记的值写到一个hidden元素里,然后在服务器端事件中再将这个hidden元素的值写回到Label里
btniuniu 2008-12-08
  • 打赏
  • 举报
回复
主要那只是个例子 我的页面上有56个label要计算 全存在cookies里就太麻烦了 而且重复计算的时候很不方便啊 我想还是用AJAX吧 多谢各位
fen1230 2008-12-08
  • 打赏
  • 举报
回复
将在js计算出的值同时存进COOKIES,InnerHTML时从COOKIES取出来,这样刷新页面SPAN的VALUE就不会丢了
btniuniu 2008-12-07
  • 打赏
  • 举报
回复
谢谢楼上的兄弟 不过服务器端的label在客户端生成的是span标签 没有value属性啊。。。
孤独侠客123 2008-12-07
  • 打赏
  • 举报
回复
嗯.刷新了肯定没有了.动态的设置的值.

在页面底部再加一段
<script>
document.getElementById(" <% =Label1.ClientID %>").value = 你计算的值;
</script>

这样就没问题了.不然刷新后.你设置的值就失效了.
XPAGE学习笔记 1 Theme 2 2 在Xpage中使用Dojo 2 2.1 加载dojo.js 2 2.2 设置应用程序主题引入tundra.css 2 2.3 设置xpage属性引入dojo模块 3 2.4 Xpage的页面html代码 4 2.5 在xpage中使用dojo编程 4 2.5.1 按钮(dijit.form.Button) 4 2.5.1.1 通过插入
标签生成dojo按钮 5 2.5.1.2 使用xpage按钮控件 7 2.5.1.3 在按钮控件上使用事件处理程序控件 7 2.5.2 Xpage中使用 Spinner(dijit.form.NumberSpinner) 9 2.5.3 在xpage中使用ProgressBar(dijit.ProgressBar) 10 2.5.4 在Xpage中使用树(dijit.Tree) 10 2.5.4.1 JSON与XML数据源 11 2.5.4.2 Box树与Order树 12 2.5.4.3 对树进行添加、删除及重命名操作 13 2.5.4.4 将树的操作记录到后台数据库 14 2.5.4.5 树的拖放 15 3 在Xpage中如何查找控件 16 3.1 理解document.getElementById 16 3.2 理解dojo.byId 17 3.3 理解dijit.byId 17 3.4 理解XSP.getElementById 17 3.5 理解getComponent 17 4 Xpage VS 表单 18 5 使用oneui主题 18 6 参考 18 6.1 JSON与String转换 18 6.2 XPage中调试代码 18 1 Theme 主题在Domino中的路径:D:\IBM\Lotus\Domino\xsp\nsf\themes 2 在Xpage中使用Dojo  Xpage自动加载dojo.js  通过设置应用程序主题将tundra.css引用到xpage  设置xpage属性,引用dojo模块  在xpage中使用dojo编程 2.1 加载dojo.js Xpage会自动加载dojo.js,默认情况下xpage自动查找data\domino\js下的最新版本。也可以通过设置xsp.properties文件来修改dojo版本,重命名xsp.properties.sample 文件(D:\IBM\Lotus\Domino\data\properties\ xsp.properties.sample) 2.2 设置应用程序主题引入tundra.css 通过设置应用程序主题将tundra.css引用到xpage 2.3 设置xpage属性引入dojo模块 2.4 Xpage的页面html代码 2.5 在xpage中使用dojo编程 2.5.1 按钮(dijit.form.Button)  通过插入
标签生成dojo按钮  使用xpage按钮控件  在按钮控件上使用事件处理程序控件 2.5.1.1 通过插入
标签生成dojo按钮 第一步:在xpage中插入
第二步:在xpage中插入 第三步:编写客户端javascript
innerHTML = "<span>Hello Dojo!span>"; dia.setContent(pane); dia.show(); } function btnDemo(){ var dojoBtn = dijit.byId("dojoBtn"); var dojoBtnNode = dojo.byId("dojoBtn"); dojoBtn.setLabel("Dojo Button"); // dojo.connect(dojoBtn.domNode,"onclick","showDia"); dojo.connect(dojoBtnNode,"onclick","showDia"); } dojo.addOnLoad(btnDemo);]]> 2.5.1.2 使用xpage按钮控件 innerHTML = "<span>dojo按钮演示!span>"; dia.setContent(pane); dia.show(); ]]> 2.5.1.3 在按钮控件上使用事件处理程序控件 将事件处理程序控件拖放到按钮控件上 2.5.2 Xpage中使用 Spinner(dijit.form.NumberSpinner) var myvalue = "#{javascript: var value; if(getComponent("numSales").getValue() != null){ value = getComponent("numSales").getValue().intValue(); }else{ value = 50; } return value.toFixed(0);}"; new dijit.form.NumberSpinner({name:"#{id:numSales}", value:myvalue, smallDelta:1, constraints:{min:0,places:0}}, XSP.getElementById("#{id:numSales}")); 2.5.3 在xpage中使用ProgressBar(dijit.ProgressBar)
jsId="jsProgress" id="div1">
jsProgress.update({ maximum: numParts, progress:0 }); for (var i=0; i<=numParts; i++){ setTimeout("jsProgress.update({ progress: " + i + " })",(i+1)*100 + Math.floor(Math.random()*100)); } ]]> 2.5.4 在Xpage中使用树(dijit.Tree)  JSON与XML数据源  Box树与Order树  对树进行添加、删除及重命名操作  将树的操作记录到后台数据库  树的拖放 2.5.4.1 JSON与XML数据源 box.json文件 { identifier:'id', label:'name', items:[ {id:1,name:"盒子1",type:"box",weight:0} ] } order.xml文件 001 订单001 航运 001-1 1 11761 精通DOJO 001-2 3 11789 项目管理那些事儿 002 订单002 快递 002-1 10 11763 精通J2EE 002-2 30 11799 超越对手 2.5.4.2 Box树与Order树
jsId="boxStore" url="/tree/box.json">
jsId="orderStore" label="description" keyAttribute="orderNumber" url="/tree/order.xml">
jsId="boxModel" store="boxStore" rootLabel="退货物品" childrenAttrs="orders,items">
jsId="orderModel" store="orderStore" rootLabel="订单" childrenAttrs="line,order">
<script type="dojo/method" event="onClick" args="item"> lastBoxSelected = item;
2.5.4.3 对树进行添加、删除及重命名操作
添加 <script type="dojo/method" event="onClick"> boxStore.newItem({id:2,name:"盒子2",type:"box",weight:0,orders:[]});
删除 <script type="dojo/method" event="onClick"> if(boxStore.isItem(lastBoxSelected)){ boxStore.deleteItem(lastBoxSelected); }
重命名 <script type="dojo/method" event="onClick"> if(boxStore.isItem(lastBoxSelected)){ boxStore.setValue(lastBoxSelected,"name","新盒子"); } 2.5.4.4 将树的操作记录到后台数据库
jsId="boxStore" url="/tree/box.json"> <script type="dojo/connect" event="onNew" args="newItem"> var itemId = this.getValue(newItem,"id"); var itemName = this.getValue(newItem,"name"); dojo.xhrPost({ url:"agCreateNewBox?OpenAgent", content:{id:itemId,name:itemName}, timeout:10000, error:function(){alert("对不起,出错啦!");}, load:function(){alert("数据保存成功!");console.debug("数据保存成功!");} }); 2.5.4.5 树的拖放 要使树具有拖放功能,仅仅需要设置dndController属性(dijit._tree.dndSource已废弃): 要限制拖放的行为,仅仅需要实现checkAcceptance或checkItemAcceptance处理函数即可: 以上已经实现了树的拖放功能了! 但是,如果要将拖放的结果保存起来,也就是说要改变树的模型并将模型数据保存,那么应该编写onDndDrop的处理函数(通过增加jsId获得dndController会出现this.avaria is null 错误,所以下面通过小部件初始化时将dndController传递给变量controller): 在boxDrop中与checkAcceptance一样可以得到target与source,另外,onDndDrop中的source与nodes有些相似source.selection[something]=nodes[somethin] 结合ItemFileWriteStore 可以实现对模型数据的保存 3 在Xpage中如何查找控件 3.1 理解document.getElementById 得到node,创建node可以用document.createElement 这样访问或设置节点的所有属性 node.innerHTML = “” node.value=”” var id = node.id var style = node.style 3.2 理解dojo.byId 得到node,也可以通过dijit.byId().domNode得到节点 dojo.byId(“myid”).value dojo.byid(“myid”).id dojo.attr(node,attribute) 如读取dojo.attr(node,”id”) dojo.attr(node,attribute,value) 如设置dojo.attr(node,”id”,”myid”) dojo.hasAttr(node,attribute) 如判断 dojo.hasAttr(node,”id”) dojo.connect(node,”onclick”,handler) dojo.removeClass(node,”myclass”) 3.3 理解dijit.byId 得到dojo控件对象,也可以通过dijit.byNode(dojo.byId())得到对象 不同的控件的getValue()返回类型不一样 在xpage中对于
标签可能使用期dijit.byId(“myid”),对于标签是不可以的 dijit.byId().getValue() dijit.byId().setValue() 3.4 理解XSP.getElementById 这是XSPClientDojo 库中定义的,XSP全局变量相当于document对象,为客户端访问xpage控件提供方法 XSP.getElementById(“#{id:myid}”)使用JSF表达式查询控件 var xid = XSP.getElementById(“#{id:myid}”) xid.value = “myvalue” xid.name = “myname” xid.disabled = false 3.5 理解getComponent javascript服务器端访问控件 getComponet(“myid”).getValue(); getComponet(“myid”).getSubmittedValue(); getComponent(“myid”).setValue(); getComponent(“myid”).setSubmittedValue(); 4 Xpage VS 表单 5 使用oneui主题 6 参考 6.1 JSON与String转换 dojo.fromJson(string) 返回json对象 dojo.toJson(object) 返回string对象 eval(‘(‘+string+’)’) 返回json对象 6.2 XPage中调试代码 window.alert 函数不可用于服务器脚本。 使用以下函数写入服务器上的 console.log(例如 C:\Notes\Data\IBM_TECHNICAL_SUPPORT\console.log): print(string) 写入一个字符串。 _dump(object) 写入表示对象的字符串。
<%Session.TimeOut=400response.expires=0dim shjian Set conn = Server.CreateObject("ADODB.Connection")conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" &Server.MapPath("../试题库.mdb")set rs=server.createobject("adodb.recordset")set rs.activeconnection=conntab1=session("tab")sql="select * from 试卷名称表 where 试卷名称=‘"& tab1 & "‘"Set rs =conn.Execute(sql)if not rs.eof then sj=rs("时间")end ifrs.close%><script language="vbscript">dim timerID dim timerRunning dim time1dim now_timedim ss_timedim remanent_timedim shjian shjian = <% =sj %>timeRunning = falsess_time=0k=0function AutoSubmit() count1.classname="text1" count2.classname="text1" count3.classname="text1" count4.classname="text1" count5.classname="text1" if timerRunning then clearTimeout(timeriD) end if timerRunning = false remanent_time=shjian StarAuto()end functionfunction StarAuto() if k mod 4=0 then if ss_time=0 then ss_time=59 remanent_time=remanent_time-1 now_time =timeserial(0,remanent_time,0) else ss_time=ss_time-1 end if time1=formatdatetime(now_time,4) if ss_time<10 then time1=cstr(time1)&":0"&ss_time else time1=cstr(time1)&":"&ss_time end if end if clock.innerHTML = time1 timerRunning = true if cdate(time1)>#00:10:30# then timerID = setTimeout("starauto()",1000) elseif cdate(time1)>#00:10:00# then if k mod 2=0 then clock.style.color = "red" clock.style.backgroundColor = "#3299cc" else clock.style.color = "white" clock.style.backgroundColor = "#3299cc" end if window.status="考试剩余10分钟,请注意抓紧时间" timerID = setTimeout("starauto()",250) elseif cdate(time1)>#00:00:00# then window.status="" timerID = setTimeout("starauto()",1000) else window.status="考试结束!" window.Parent.frames("main").form1.submit() ‘form1.submit() end if end functionfunction save_onclick() if window.Parent.frames("main").document.title="考核系统" then window.Parent.frames("main").frmform.rest_time.value=remanent_time window.Parent.frames("main").frmForm.submit() end ifend functionfunction posit_scroll(posit)if window.Parent.frames("main").document.title="考核系统" then window.parent.frames("main").document.all.item(posit).scrollintoview(true) window.parent.frames("main").warning.style.visibility = "visible"end ifend functionfunction posit_scroll2() if window.event.srcElement.className="text1" then posit=window.event.srcElement.innerHTML window.parent.frames("main").document.all.item(posit).scrollintoview(true) end ifend functionfunction change_color() if window.event.srcElement.classname ="text1" then window.event.srcElement.style.color="red" end ifend functionfunction restore_color() if window.event.srcElement.classname="text1" then window.event.srcElement.style.color="white" end ifend function试卷<%userip=request.ServerVariables("Remote_ADDR")%>
剩余时间

 

 
[FrontPage 保存结果 组件]

 

<span style="font-weight: 400">版权所有
安阳电大
2001-2002span>

 

 

 

 

 

 

对于有段线记录的登录页面的代码编写如下:<%@ Language=VBScript %><%Set conn = Server.CreateObject("ADODB.Connection")conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("../试题库.mdb")set rs=server.createobject("adodb.recordset")set rs.activeconnection=connname=session("user")tab1=session("tab")stzs=0%><% sql1="select * from "& name & tab1 &"暂时 where 试题题型=‘单项选择‘" set rs1=conn.execute(sql1) response.write "

" response.write "" response.write "

一. 单项选择题

" rs1.movefirst z=1 do while not rs1.EOF tm=rs1("试题") fs=rs1("试题分数") response.write "

" & z & "." & tm & "(" & fs & "分)" response.write "
请选择:
" if rs1("附加参数")<=0 then rs1("附加参数")=1 end if for i = 1 to rs1("附加参数") stzs=stzs+1 next dxanswer=rs1("用户答案") dxanswer=trim(dxanswer) if dxanswer="A" then response.write " A" response.write " B" response.write " C" response.write " D" elseif dxanswer="B" then response.write " A" response.write " B" response.write " C" response.write " D" elseif dxanswer="C" then response.write " A" response.write " B" response.write " C" response.write " D" elseif dxanswer="D" then response.write " A" response.write " B" response.write " C" response.write " D" else response.write " A" response.write " B" response.write " C" response.write " D" end if z=z+1 rs1.movenext loop rs1.close%>

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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