gpt4 book ai didi

javascript - CS0103 : The name ' ' does not exist in the current context (javascript)

转载 作者:行者123 更新时间:2023-11-28 13:25:12 25 4
gpt4 key购买 nike

为什么运行这段代码会出现以下错误:我该如何计算 foreach 中的重复次数?

CS0103: The name 'c' does not exist in the current context

if (c == 5) {

<script>

$(document).ready(myFunction())

function myFunction() {

var table = document.getElementById("tbVideos");
var c = 5;

@foreach (var item in Model) {

if (c == 5) {
c = 0;
var row = table.insertRow(c);
}
var cell1 = row.insertCell(c);
call1.innerHTML = Html.DisplayFor(modelItem => item.ID_TERCEIRO);
c = c + 1;
}
}
</script>

最佳答案

出现错误消息的原因是 @foreach 成为 Razor 的服务器端指令。服务器仅解释 @foreach block 的内容,而不解释 myFunction 的其余部分。因此,当服务器执行 @foreach 逻辑时,服务器上没有有效的 c 定义。

如果您使用Array.forEach,它将在客户端运行。然后,您可以根据方法调用向其传递一个匿名函数,这将结束您对 c 的原始定义。

也正如其他人所说,不要将 myFunction 的返回值传递给 $(document).ready - 传递函数本身(请参阅下面的评论)。

最后,谈谈最佳实践。除非您正在编写一些模块化的 UI 小部件,否则使用 innerHTML 通常是一种反模式。当您的堆栈中内置了服务器端模板渲染时尤其如此。我的意思是,对于下面的这个特定示例,beautifulcoder 的建议更为正确。也就是说,您可能最好使用 Razor 直接在服务器端渲染 HTML。客户端渲染不会太令人震惊,但是如果您使用它来更新数据而无需页面刷新,而不是在 ready 事件触发时一次性(尽管在这种情况下您是最好使用具有适当数据绑定(bind)的 JS 库,例如 knockoutjs)。

<script>

// note: pass function to handler, not return of function
$(document).ready(myFunction)

function myFunction() {

var table = document.getElementById("tbVideos");
var c = 5;

Model.forEach(function(item) {

if (c == 5) {
c = 0;
var row = table.insertRow(c);
}
var cell1 = row.insertCell(c);
call1.innerHTML = Html.DisplayFor(modelItem => item.ID_TERCEIRO);
c = c + 1;
});
}
</script>

关于javascript - CS0103 : The name ' ' does not exist in the current context (javascript),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29834313/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com