我正在使用asp.net和VB.Net开展一个Web项目。 我有一个循环àjavascript代码让我们说它是:
Do While Not oActivite.eof
strScript = "<script type='text/javascript'>"
strScript = strScript + "alert(" + strActiviteId + ");"
strScript = strScript + "</script>"
Loop
ScriptManager.RegisterStartupScript(Me.Page, GetType(String), "tmp", strScript, False)
strScript是一个字符串 而strActiviteId是一个变量,它在每个循环中都会发生变化。
当页面加载时,我只会收到第一个strActiviteId值的警报。 我想要的是:
Alert(strActiviteIdFirstLoop);
Alert(strActiviteIdSecondtLoop);
...
但问题不止于此,我有一个更大的脚本而不是警报,一个jQuery脚本在td前添加一个包含span和输入的div。
和我想要的是附加到div id strActiviteId变量,之后我会在id中获得具有相同strActiviteId值的div,但是当我做了你告诉我的时候,现在我在每个复选框前面得到三个div
这是我在strScript中添加的jQuery代码:
$("#ctl00_indexBody_ID_ACTIVITE tbody tr td").after("
<span id='ctl00_indexBody_label1' >Tarif : </span>
<input type='TEXT'
onchange='ContenuModifier();'
style='width: 270px;' id='N_PRIX'
name='N_PRIX' onfocus='BeginSaisie(this,'99999')'
onblur='EndSaisie(this,'99999')'
onkeypress=';CtrlSaisie(event,this,'99999')' maxlength='5'
class='user_access_email bootstrapped-input input-text input-block-level input-xlarge'>
");
我希望这是可以理解的,谢谢你的帮助。
Ps:eof是一个内置方法,当oActivite中没有数据时返回false,这是我之前填充的对象。
答案 0 :(得分:1)
第一行:
strScript = "<script type='text/javascript'>"
重置每个循环中的脚本值。并且只在do while循环之后注册脚本。只会渲染最后一个脚本值。
试试这个:
strScript = "<script type='text/javascript'>"
Do While Not oActivite.eof
strScript += "alert(" + strActiviteId + ");"
Loop
strScript += "</script>"
ScriptManager.RegisterStartupScript(Me.Page, GetType(String), "tmp", strScript, False)
那就是说,你应该考虑根据循环次数使用StringBuilder来减少字符串实例化。