在 JavaScript 中合并数组不起作用
Merging arrays in JavaScript not working
当我尝试var a = ar_url2.concat(ar_desc2);
将我的数组合并为一个数组时,它返回 null。 我敢肯定这是微不足道的,但我现在花了几个小时坚持这个问题,解释为什么会发生这种情况会很棒。在我的代码中,我尝试了while(ar_url2.length)a.push(ar_url2.shift());
,它返回相同的空...
function agregar() {
var i = 0,
textarea;
var ar_desc = [];
while (textarea = document.getElementsByTagName('textarea')[i++]) {
if (textarea.id.match(/^desc_([0-9]+)$/)) {
ar_desc.push(textarea.id);
}
}
var desc_count_demo = document.getElementById('desc_count').value;
var desc_count = desc_count_demo - 1;
i = 0;
var ar_desc2 = [];
var campo = null;
while (i <= desc_count) {
campo = document.getElementById(ar_desc[i]).value;
ar_desc2[ar_desc[i]] = campo;
i++;
}
i = 0;
var input;
var ar_url = [];
while (input = document.getElementsByTagName('input')[i++]) {
if (input.id.match(/^url_([0-9]+)$/)) {
ar_url.push(input.id);
}
}
var url_count_demo2 = document.getElementById('url_count').value;
var url_count2 = url_count_demo2 - 1;
i = 0;
var ar_url2 = [];
while (i <= url_count2) {
campo = document.getElementById(ar_url[i]).value;
ar_url2[ar_url[i]] = campo;
i++;
}
// var a = Array.prototype.concat.call(ar_url2, ar_desc2);
while (ar_url2.length) a.push(ar_url2.shift());
function url(data) {
var ret = [];
for (var d in data)
ret.push(encodeURIComponent(d) + "=" + encodeURIComponent(data[d]));
return ret.join("&");
}
window.open('alta1.php?'+url(a));
}
编辑:如果我传递给函数url(ar_url2)或url(ar_desc2),URL中返回的值是
http://localhost/proj1/alta1.php?url_0=inpit&url_1=input
和
http://localhost/proj1/alta1.php?desc_0=input&desc_1=input
但仍然无法将两者合并为一个...
我看到的一件事是你的ar_url数组由以下部分填充:
while(input=document.getElementsByTagName('input')[i++]){
if(input.id.match(/^url_([0-9]+)$/)){
ar_url.push(input.id);
}
}
由于您将整个id
放入数组中,因此它将填充以下内容:'url_0'
,'url_1'
,'url_2'
等...
稍后你做:
ar_url2[ar_url[i]] = campo;
当你索引到ar_url
时,你会得到'url_XXX'
字符串。 这意味着您是在ar_url2
上设置'url_XXX'
属性,而不是填充数组的元素。
尝试将第二个循环更改为:
while(input=document.getElementsByTagName('input')[i++]){
var result;
if(result = input.id.match(/^url_([0-9]+)$/)){
ar_url.push(+result[1]);
}
}
使用在 RegExp 的([0-9]+)
部分中捕获的值,而不是整个'url_XXX'
字符串。
相关文章:
- For循环与数组不起作用
- 循环浏览页面上所有选中的复选框并将id拉入数组不起作用
- 映射 jQuery 对象的数组不起作用
- Javascript-自定义数组不起作用
- 函数中的Javascript数组不起作用
- Js browserify 需要从字符串数组不起作用
- 来自 JSON 的 Javascript 数组不起作用
- 按属性排序的 Javascript 对象数组不起作用
- 在 JavaScript 中合并数组不起作用
- 普通的OOP Javascript:将localStorage视为数组不起作用
- 为什么这个map reduce Promises数组不起作用,而只是减少它起作用
- 在IE 10中,javascript数组不起作用
- if(array.length===1) 条件对长度> 1 的数组不起作用
- .将Integer推入数组不起作用JS/JQuery
- 在 java 脚本中处理多维数组不起作用
- 通过 AJAX 提交 PHP 数组不起作用
- 将json转换为Javascript数组不起作用
- 带冒号的数组不起作用
- 将事件处理程序添加到按钮数组不起作用 Javascript
- javascript中的echo php数组不起作用