我尝试在数组中创建数组,然后将其转发到JSON。
第一个问题,当我尝试使用lista.length
或类似命令时,控制台始终返回0。我试图克服此问题并创建另一个数组,但是现在我遇到了JSON问题-始终返回{{1} }-空的[]
数组。
lista
来自浏览器的控制台日志:
我没有更多的主意,不能使用var lista = [];
var licz = [];
function ListujBledy(value, where) {
var checked = document.getElementById(value).checked;
var desc;
if (value == "blad-tab") {
desc = "Nieprzeźroczysta lista graczy.";
} else if (value == "blad-tab1") {
desc = "Brak listy graczy na początkowym zrzucie ekranu.";
} else if (value == "blad-tab2") {
desc = "Brak listy graczy na końcowym zrzucie ekranu.";
}
if (checked == true) {
if (lista[where] == undefined) {
var temp = [];
temp[value] = desc;
lista[where] = temp;
licz[where] = 1;
} else if (licz[where] == 1) {
var temp = lista[where];
temp[value] = desc;
lista[where] = temp;
licz[where] = 2;
} else if (licz[where] == 2) {
var temp = lista[where];
temp[value] = desc;
lista[where] = temp;
licz[where] = 3;
}
} else {
if (licz[where] == 1) {
delete lista[where];
licz[where] = 0;
} else if (licz[where] == 2) {
delete lista[where][value];
licz[where] = 1;
} else if (licz[where] == 3) {
delete lista[where][value];
licz[where] = 2;
}
}
console.log(lista.length);
console.log(lista);
console.log(JSON.stringify(lista));
console.log("---------------------------------------------------------");
}
,lista[0]
等。一切都必须正常运行。 Eveyrthing来自变量,但是在我一直在寻找有关它的信息的地方,每个人都在键或永久键中使用数字。
代码的编辑版本:
我知道lista[1]
可以做得更好,所以我在这里更正了。
https://jsfiddle.net/5vdgLtue/1/
主要问题是,即使执行此操作,https://jsfiddle.net/5vdgLtue/0/数组也会返回此元素,但是checked
函数说它为0。
答案 0 :(得分:0)
看来您可能刚开始使用javascript。请记住,您实际上并未在代码中的任何时候调用该函数。是这种情况还是您不共享已运行的完整代码?
答案 1 :(得分:0)
只有一种情况下数组'lista'可以获取值:'check'== true和'where'== undefined。
在那种情况下,您声明数组'temp'并声明temp [value] = desc。但是,如果“值”包含与“ blad-tab”,“ blad-tab1”或“ blad-tab2”不同的值,则“ desc”保持为空,因此temp [value]具有名称但没有值。然后,您将一个命名的无值项分配给lista [where],这将解释控制台为何显示内容但不显示长度的原因。顺便说一句,如果您将变量命名为'value'以外的其他名称,则会更容易。
问题是您的选择器指向父元素。在jquery中,您可以执行较少的代码,但是假设您没有使用jQuery。尝试类似的东西:
function getDesc(chkboxName) {
var checkboxes = document.getElementsByName(chkboxName);
//or use getElementsbyClassName...
var checkboxesChecked = [];
// loop over them all
for (var i=0; i<checkboxes.length; i++) {
// And stick the checked ones onto an array...
if (checkboxes[i].checked) {
checkboxesChecked.push(checkboxes[i]);
}
}
for (var i=0; i<checkboxesChecked.length; i++) {
if (checkboxesChecked[i].value === "blad-tab") {
desc = "Nieprzeźroczysta lista graczy.";
} else if (checkboxesChecked[i].value === "blad-tab1") {
desc = "Brak listy graczy na początkowym zrzucie ekranu.";
} else if (checkboxesChecked[i].value === "blad-tab2") {
desc = "Brak listy graczy na końcowym zrzucie ekranu.";
}
}
return desc;
}
请记住,我还没有测试它。此外,如果有帮助,请投票。我可以使用声望点。谢谢。
答案 2 :(得分:0)
This应该回答您的大多数问题。
总结:
在javascript中,数组有2种类型:标准数组和关联数组
[]-标准数组-仅基于0的整数索引
{}-关联数组-键可以是任何字符串的javascript对象
您正在做的是以关联方式使用数组。基本上,您是在向数组对象添加属性,这与标准数组不同,在标准数组中,您只能通过零索引数字(例如temp[0]='something'
,lista[1]='some other thing'
等来分配值)。
如果需要数组键集的长度,则可以使用Object.keys(lista).length
。这应该可以解决您的问题。