在 "<%: %>" 中包含一个 JS 变量
Posted
技术标签:
【中文标题】在 "<%: %>" 中包含一个 JS 变量【英文标题】:Include a JS variable inside "<%: %>" 【发布时间】:2020-06-03 13:31:07 【问题描述】:我想在 '' 代码中包含变量“count”。
html 代码
<table id="myTable">
<tr>
<td>Row1 cell1</td>
<td>Row1 cell2</td>
</tr>
</table>
<br>
<button type="button" onclick="myFunction()">Try it</button>
<script>
function myFunction()
var count;
for (count = 0; count < <%=Givenome.Count()%>; count++)
var table = document.getElementById("myTable");
var row = table.insertRow(0);
var cell1 = row.insertCell(0);
var cell2 = row.insertCell(1);
cell1.innerHTML = "<%:Givenome[count]%>";
cell2.innerHTML = "NEW CELL2";
</script>
这是我的 C# 代码,我在其中创建字符串数组。
public string[] Givenome get; set;
protected void Page_Load(object sender, EventArgs e)
string[] answers = new string[10] "Y", "Y", "N", "Y", "N", "Y", "N", "Y", "N", "Y" ;
Givenome = answers;
【问题讨论】:
问题出在哪里? 运行代码时是否出现任何错误?<%:Givenome[count]%>
count 是一个 javascript 变量,它不起作用。为什么不将数组嵌入为 javascript 数组,然后只使用纯 javascript?
Givenome
是一个C# 数组,它只存在于服务器上,而Javascript 运行在浏览器中。除了 HTTP 请求之外,这两个部分没有互连。
你可以在 javascript var answers = <%= Json.Serialize(Givenome) %>;
中做,然后在 javascript 中循环。
【参考方案1】:
您应该使用将您的 c# 数组转换为 javascript 可读的格式
var array = <%=new System.Web.Script.Serialization.JavaScriptSerializer().Serialize(this.Givenome)%>;
然后你可以遍历 javascript 对象
for (var x = 0; x < array.length; x++)
var table = document.getElementById("myTable");
var row = table.insertRow(0);
var cell1 = row.insertCell(0);
var cell2 = row.insertCell(1);
cell1.innerHTML = array[x];
cell2.innerHTML = "NEW CELL2";
【讨论】:
【参考方案2】:我认为你想要的是这样的:
var table = document.getElementById('myTable');
<%
for (var i = 0; i < Givenome.Length; i++)
Response.Write("");
Response.Write("var row = table.insertRow(0);");
Response.Write("var cell1 = row.insertCell(0);");
Response.Write("var cell2 = row.insertCell(1);");
Response.Write("cell1.innerHTML = '" + Givenome[i] + "';");
Response.Write("cell2.innerHTML = 'NEW CELL2';");
Response.Write("");
%>
【讨论】:
如果 Givenome 有一百万件商品长怎么办?您真的想在 HTML 中将该块注入一百万次吗?此外,OP 将它包装在一个 JavaScript 函数中,大概是为了从不同的地方调用它。最后(也与 OP 的代码有关):JS 具有 var 的函数级别范围,所以你不应该像这样使用它们。我不会推荐这个答案。 不,我不知道,但这是他问题的答案。恐怕没有其他简单直接的方法可以解决这个问题。范围界定与此无关,因为我们不关心这一点。 范围确实无关紧要,只是指出来,因为它在您的重复代码中变得更加明显,就像在 OP 的块级 for 循环中一样。但是,我的主要观点是:不要使用代码来生成代码。这是一场可持续发展的噩梦,应该不惜一切代价避免。使用代码生成数据,如@swagat raorane 的回答。以上是关于在 "<%: %>" 中包含一个 JS 变量的主要内容,如果未能解决你的问题,请参考以下文章
在这种情况下使用 <a href="http://name.com" rel="noindex, nofollow">name</a>
为啥 <input type="number" maxlength="3"> 在 Safari 中不起作用?
为啥 <input type="number" maxlength="3"> 在 Safari 中不起作用?
用bootstrap写了一个<div class="row">...</div>,如何让这个div在整个浏览器窗口居中?