Javascript迭代不起作用的元素

时间:2014-03-24 16:50:08

标签: javascript .net vb.net

我有一个JavaScript工作,直到几分钟前,现在它不再工作,但我没有改变任何东西。

我的JavaScript是:

var estadoactual ="";
for (var i=1;i<=document.getElementById("cantidaddepermisos").value;i++) {
var elemento = 'chk_' + i
if (document.getElementById(elemento).checked == 1) {
     estadoactual = estadoactual + elemento + "#" + "Si" + "|"
} 
else {
      estadoactual = estadoactual + elemento + "#" + "No" + "|"
      }
}
alert("Estado actual: " + estadoactual)

在我的场景中,我有几个复选框(chk_n),我想要做的是迭代它们,我知道它们的格式为chk_ +一个数字,所以我做了#34; for循环&#34;

此代码工作正常,不知道为什么它停止工作,我在这个项目上工作3天醒来也许我错过了一些东西所以我需要更多的人才能看到告诉你是否有明显的错误。

3 个答案:

答案 0 :(得分:0)

也许麻烦就是在javascript文件中缓存。

尝试将来源更改为:

<script language="JavaScript" src="js/myscript.js?n=1"></script> 

删除javascript文件的缓存浏览器

答案 1 :(得分:0)

看看你的代码:

for (var i=1;i<=document.getElementById("cantidaddepermisos").value;i++) {

您正在迭代输入值,默认情况下为String。尝试解析它:

for (var i=1;i<=parseInt(document.getElementById("cantidaddepermisos").value);i++) {

希望它能解决你的问题。

答案 2 :(得分:0)

好的,明白了。非常感谢您帮助我并为此花时间。我将解释在其他人需要的情况下发生的事情。

我的表是在dinamically创建的,这意味着我的代码隐藏为每个“权限”创建一个2,您可以从数据库中选择。这些权限是手动加载到数据库中(客户要求),你需要为每个人设置一个数字,地雷从1到34(今天早上一切正常工作)然后我添加了一个新的配置文件(99)一个特殊的隐藏权限。

这意味着数据库中有34个权限,因此for将从1循环到34,但我的复选框名为chk_ +“numberofpermission”

这意味着它们最后是chk_1到chk_34 AND chk_99,所以当javascript到达34位时它正在寻找chk_34,因为复选框的名称是“chk_99”

真的很难搞清楚,但现在它再次运作,需要改变我为用户设置这个隐藏权限的方式,以避免这个问题。

非常感谢您的时间,这个社区非常出色。

来自阿根廷的问候