babytree666 2024-02-23 02:46 采纳率: 100%
浏览 2
已结题

请问这段代码怎么改才正确啊

jquery循环语句中attr赋值问题?
我编写了如下代码:

var a1="字符串1";
var a2="字符串2";
var a3="字符串3";
此时写循环语句:

$("[id^='g']").each(function(index){
for (var i=1; i<=3; i++) {
switch(index + 1){

case i:
$(this).attr("value", "a"+i);
break;
};
};

});

此时为啥添加进value里的值是a1,2,3,而不是字符串1,字符串2,字符串3?请问这段代码怎么改才正确啊?

  • 写回答

2条回答 默认 最新

  • GISer Liu 2024-02-23 02:47
    关注

    该回答引用自GPT-3.5,由博主GISer Liu编写:

    问题分析:

    首先,你的代码中存在一个问题:在循环中,你使用了switch语句来判断index + 1i的关系,然后根据不同情况给$(this)设置不同的value值。但是,你使用的是字符串"a1"、"a2"、"a3",而不是变量a1a2a3中存储的实际值。这就导致了value里的值是"a1"、"a2"、"a3",而不是期望的"字符串1"、"字符串2"、"字符串3"。

    解决方案:

    要解决这个问题,你可以考虑使用JavaScript的eval()函数来动态获取变量值,即根据字符串的值动态获取对应变量的值。具体步骤如下:

    1. 将变量名字符串与实际的变量值关联起来。
    2. 在循环中根据索引动态获取对应的变量值,并设置为value属性的值。

    以下是修改后的代码示例:

    var a1 = "字符串1";
    var a2 = "字符串2";
    var a3 = "字符串3";
    
    $("[id^='g']").each(function(index) {
        for (var i = 1; i <= 3; i++) {
            switch (index + 1) {
                case i:
                    // 使用eval()函数动态获取变量值并设置为value属性的值
                    $(this).attr("value", eval("a" + i));
                    break;
            };
        };
    });
    

    这样修改后,value属性里的值就会正确地是"字符串1"、"字符串2"、"字符串3"了。

    如果该回答解决了您的问题,请采纳!如果没有,请参考以下方案进行修订

    用户答题指南

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
    1人已打赏
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 3月2日
  • 已采纳回答 2月23日
  • 创建了问题 2月23日

悬赏问题

  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 unity第一人称射击小游戏,有demo,在原脚本的基础上进行修改以达到要求
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?
  • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算
  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥15 cmd cl 0x000007b
  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line