首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Javascript操作并不能在@foreach循环(MVC C#)中的每个实例上运行

Javascript操作并不能在@foreach循环(MVC C#)中的每个实例上运行
EN

Stack Overflow用户
提问于 2015-11-12 13:13:31
回答 1查看 104关注 0票数 1

我有3个javascipt/AJAX调用,它们都是在@foreach循环中对ahref进行的。

实际上,在网格中为"device“表中的每一行创建了4个按钮。

脚本正在发送给MVC控制器。对于第一组按钮,它可以正常工作,但是对于第二组,则什么也不做?!我肯定我错过了一些简单的东西!最好能给你一些建议!谢谢安东

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 @model Alfred.Models.DashboardModel

@{ var IconColour = "";}
<div class="content">
@foreach (var Location in Model.Location)
{
    <section id="@Location.Section">
        @foreach (var Device in Model.Devices)
            {
                if (Device.LocationId == Location.ID)
                {
                    if (Device.StateId == 1)
                    { IconColour = Device.IconColour; }
                    else
                    { IconColour = "#A0A0A0"; }
                    <div class="mediabox">
                        <div align="center">
                            <a id="UpdateState" data-deviceid="@Device.ID"><i class="@Device.Icon" style="color: @IconColour"></i></a>
                            <div class="mediaboxbtn">
                                <div class="mediaboxbtnl">
                                    <a id="IncreaseLevel" data-deviceid="@Device.ID"><i class="@Device.Button1" style="color: @Device.Button1Colour"></i></a>
                                </div>
                                <div class="mediaboxbtnm">
                                    @Device.Level
                                </div>
                                <div class="mediaboxbtnr">
                                    <a id="DecreaseLevel" data-deviceid="@Device.ID"><i class="@Device.Button3" style="color: @Device.Button3Colour"></i></a>
                                </div>
                            </div>
                        </div>
                        <div align="center"><h3>@Device.Name</h3></div>
                    </div>
            }
        }
    </section>
}
</div><!-- /content -->
@section scripts {
<script type="text/javascript">
    $(document).ready(function () {
    $('#UpdateState').click(function () {
        var url = "/Dashboard/ChangeState";
        var DeviceId = $(this).attr('data-deviceid');
        console.log('Data ' + DeviceId);
        $.post(url, { DeviceId }, function (data)
        {
            window.location.reload ();
        });
    })

$('#IncreaseLevel').click(function () {
    var url = "/Dashboard/IncreaseLevel";
    var DeviceId = $(this).attr('data-deviceid');
    console.log('Data ' + DeviceId);
        $.post(url, { DeviceId }, function (data)
        {
            window.location.reload ();
        });
})

$('#DecreaseLevel').click(function () {
  var url = "/Dashboard/DecreaseLevel";
  var DeviceId = $(this).attr('data-deviceid');
  console.log('Data '+ DeviceId);
     $.post(url, { DeviceId }, function (data) {
        window.location.reload();
         });
        })

})
</script>
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-12 13:58:27

生成无效的html是因为重复的id属性和$('#UpdateState')选择器只返回带有id="UpdateState"的第一个元素。而是使用类名。您的html应该是

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<a class="UpdateState" data-deviceid="@Device.ID"><i class="@Device.Icon" style="color: @IconColour"></i></a>

并将脚本更改为

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$('.UpdateState').click(function () {
    var url = '@Url.Action("ChangeState", "Dashboard")'; // don't hard code your url's
    var DeviceId = $(this).data('deviceid'); // use the data method
    $.post(url, { DeviceId: DeviceId }, function (data) // correct way to pass the data assuming your method parameter is named DeviceId
    {
        ....
    });
})

但是,使用ajax --如果您只是重新加载整个页面--是有点没有意义的,并且违背了使用ajax的全部目的。您还没有显示控制器代码,但是假设您想切换对象状态(true/false),那么您的方法应该更新数据库并返回一个JsonResult,指示成功与否(例如,return Json(true)return Json(null);),然后您可以测试返回值并更新DOM (例如,您可以切换一个类名以更改元素的颜色以直观地指示其当前状态)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33681467

复制
相关文章
c# 中for和foreach循环的区别
    (2)效率比for要高(C#是强类型检查,for循环对于数组访问的时候,要对索引的有效值进行检查)
vv彭
2020/10/27
4.9K0
c# 中for和foreach循环的区别
JavaScript中如何中断forEach循环
arr.forEach(callback[, thisArg]),callback会接收到三个参数:currentValue、index、array
meteoric
2018/11/20
2.7K0
C# foreach循环较for循环的优势与劣势
一、foreach循环的优势 C#支持foreach关键字,foreach在处理集合和数组相对于for存在以下几个优势: 1、foreach语句简洁 2、效率比for要高(C#是强类型检查,for循环对于数组访问的时候,要对索引的有效值进行检查) 3、不用关心数组的起始索引是几(因为有很多开发者是从其他语言转到C#的,有些语言的起始索引可能是1或者是0) 4、处理多维数组(不包括锯齿数组)更加的方便,代码如下: int[,] nVisited ={ {1,2,3}, {4,5,6
郑小超.
2018/01/26
2.7K0
面试官:如何停止 JavaScript 中的 forEach 循环?
我对结果感到沮丧,问面试官:“为什么?实际上可以停止 JavaScript 中的 forEach 循环吗?”
前端达人
2023/08/31
2310
面试官:如何停止 JavaScript 中的 forEach 循环?
Java中的增强 for 循环 foreach
  foreach 是 Java 中的一种语法糖,几乎每一种语言都有一些这样的语法糖来方便程序员进行开发,编译期间以特定的字节码或特定的方式来对这些语法进行处理。能够提高性能,并减少代码出错的几率。在
IT可乐
2018/01/04
3.1K0
Java中的增强 for 循环   foreach
JavaScript循环实例
几个经典的循环案例: 1.一张纸的厚度是0.0001米,将纸对折,对折多少次厚度超过珠峰高度8848米 var i=0; var h=0.0001; while(true){
二十三年蝉
2018/02/27
1.6K0
JavaScript循环实例
C# Foreach循环本质与枚举器
  对于C#里面的Foreach学过 语言的人都知道怎么用,但是其原理相信很多人和我一样都没有去深究。刚回顾泛型讲到枚举器让我联想到了Foreach的实现,所以进行一番探究,有什么不对或者错误的地方大家多多斧正。
SpringSun
2020/08/11
1K0
C# Foreach循环本质与枚举器
Java 中for循环和foreach循环哪个更快?
在Java编程中,循环结构是程序员常用的控制流程,而for循环和foreach循环是其中比较常见的两种形式。关于它们哪一个更快的讨论一直存在。本文旨在探究Java中的for循环和foreach循环的性能差异,并帮助读者更好地选择适合自身需求的循环方式。通过详细比较它们的遍历效率、数据结构适用性和编译器优化等因素,我们将为大家揭示它们的差异和适用场景,以便您能够做出更明智的编程决策。
葡萄城控件
2023/10/16
6330
Java 中for循环和foreach循环哪个更快?
C#如何:编写简单的 Parallel.ForEach 循环
本文档使用 lambda 表达式在 PLINQ 中定义委托。 如果不熟悉 C# 或 Visual Basic 中的 lambda 表达式,请参阅 PLINQ 和 TPL 中的 Lambda 表达式。
全栈程序员站长
2022/09/09
1.6K0
js 中 forEach 如何跳出循环?
// 1.for方法跳出循环 function getItemByIdFor(arr, id) { var item = null; for (var i = 0; i < arr.length; i++) { console.log("for循环 i", i); if (arr[i].id == id) { item = arr[i]; break; } } return ite
蓓蕾心晴
2022/11/22
8.4K0
java退出foreach循环_forEach方法如何跳出循环[通俗易懂]
3.1 foreach()不能使用break和continue这两个关键字,foreach和普通的for循环是不同的,它不是普通的遍历,实现continue的效果可以直接使用return。
全栈程序员站长
2022/09/01
15K0
lamda中stream的forEach与for循环对比
循环大概在50000大小的时候for循环就开始慢慢运行时间大于forEach,在50000数据之前都是for循环优势。但是当我直接加到1000000大小时发现for循环的速度优势又回来了,又测试了500000发现依然是for循环优势。 所以大概率下,几万几万数据时forEach速度是领先的。小数据和极大数据下for循环领先,所以推荐使用for循环,一般业务中很少有几万数据去循环。
全栈程序员站长
2022/11/15
1.2K0
lamda中stream的forEach与for循环对比
增强For循环(foreach)
(1)只能顺序遍历所有元素,无法实现较为复杂的循环,如在某些条件下需要后退到之前遍历过的某个元素,不能完成
星哥玩云
2022/09/14
2.2K0
gdb操作运行中的MySQL实例--"黑科技"
给大家分享2个利用gdb的操作运行中的mysql实例的小技巧。(线上环境测试后再食用)
DBA札记
2022/12/19
1K0
cssjshtml js 循环forEach
 js 循环forEach const names=new Array() resp.series.forEach(function (item,index) { names.push(item['name']) })
葫芦
2019/04/17
6.3K0
c# 控制职能运行单一实例,再次运行显示已经运行的实例
有这么个需求,软件只能运行一个实例,软件运行后可以让其隐藏运行 再次运行这个软件的时候就让正在运行的实例显示出来 ================================= 当软件隐藏后没办法拿到句柄 于是只有第一次运行的时候讲句柄保存下来,于是有了下面的 1 private void HideForm() 2 { 3 string handlestr = System.Diagnostics.Process.GetCurrentProcess().M
冰封一夏
2019/09/11
6370
for和foreach循环语句
今天我们来讲解一下 for跟foreach 一、for 是一个循环语句 for break continue 从 i=0开始,到i=10结束,每次循环 for (i = 1; i <= 10; echo $i; } for (i = 10; i >0; echo $i; } //for可以嵌套 for (i = 1; i <= 10; for (j = 1; j <= 10; continue; echo i.j; } if($i==5) bre
老雷PHP全栈开发
2020/07/02
2.9K0
变相跳出forEach循环
众所周知,forEach循环是无法中途跳出循环的,有点同学说不是可以通过抛出错误跳出循环吗?是的。抛出异常是广为流传的一种方法,结果是我们想要,但是你看代码,哪个正常人会这样写代码?是非forEach不用吗?还是其他的循环关键字不配呢。
骤雨重山
2023/08/13
1920
变相跳出forEach循环
day022: forEach中return有效果吗?如何中断forEach循环?
022: forEach中return有效果吗?如何中断forEach循环? 在forEach中用return不会返回,函数会继续执行。 let nums = [1, 2, 3]; nums.forEach((item, index) => { return;//无效 }) 中断方法: 使用try监视代码块,在需要中断的地方抛出异常。 官方推荐方法(替换方法):用every和some替代forEach函数。every在碰到return false的时候,中止循环。some在碰到return ture的时
用户3806669
2021/03/11
2.5K0
Javascript DOM操作实例
      最近在学DOM,但是还是没有办法很好的记住API,想找些例子来练习,网上的例子将一个个DOM对象方法挨个举例,并没有集合在一起用,效果不尽人意。所以自己写一份实例,顺便巩固下学到的知识。       这个例子很简单,主要就是操作ul下面的li,但是会贯穿很多DOM的对象方法。       首先在body下面创建一个ul,注意<ul></ul> 之间不要有空格或回车,否则会造成文本节点。 ``` <body> <ul id="fruit"></ul> </body> ```   接下来
用户1624346
2018/04/10
9260
Javascript DOM操作实例

相似问题

javascript并不能在foreach的所有元素中工作

13

Powershell foreach-object循环似乎并不总是运行每个对象的进程块。

22

php上的循环不能在javascript上运行

10

标签并不表示forEach中的循环

12

微软的UIAutomation并不总是能在某些电脑上运行。C#

36
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文