为了账号安全,请及时绑定邮箱和手机立即绑定

array.length 在 push() 上不增加

array.length 在 push() 上不增加

繁花如伊 2021-06-17 13:41:59
我将字符串推送到数组并在文本区域中显示元素。数组在onchange触发时按预期填充,然后我需要获取数组中的元素数,但IDarr.length保持固定为 2。有人可以就错误向我提出建议吗?这是我的代码:脚本:function UpdBttn(ct){    var array = document.getElementById('array').innerHTML;    var IDarr = [array];    IDarr.push(ct);    document.getElementById('array').innerHTML = IDarr;    alert(IDarr.length);}接收文本区域:<textarea id="array"></textarea><br>输入文本(来自数据库循环)以填充IDarr onchange:<input Type="text" id="event<%=ct%>" value="<%=events(dates)%>" onchange="UpdBttn(this, '<%=ct%>')">
查看完整描述

3 回答

?
翻阅古今

TA贡献1780条经验 获得超5个赞

您需要在函数外部定义变量,以防止每次调用函数时都初始化它,试试这个:


var IDarr = [];

function UpdBttn(ct){

  var array = document.getElementById('array').innerHTML;


  IDarr.push(ct);


  document.getElementById('array').innerHTML = IDarr;


  alert(IDarr.length);

}



查看完整回答
反对 回复 2021-06-18
?
DIEA

TA贡献1820条经验 获得超2个赞

我不确定您要实现的目标,但您可能会执行以下操作:


function UpdBttn(ct){


  var array = document.getElementById('array').innerHTML;

  var IDarr = array.split(',');


  IDarr.push(ct);


  document.getElementById('array').innerHTML = IDarr.join(',');


  alert(IDarr.length);

}


查看完整回答
反对 回复 2021-06-18
?
白板的微信

TA贡献1883条经验 获得超3个赞

innerHTML返回一个字符串。因此,当您使用var array = document.getElementById('array').innerHTML;它检索数组时,它是单个字符串。所以你的数组中有一个字符串元素,在推送另一个元素后它变成了两个。


const button = document.querySelector('button');


button.addEventListener('click', function() {

    const divContent = document.querySelector('#array').innerHTML

    const idArr = [divContent];

    console.log(idArr);

     

    idArr.push('lorem');

    document.getElementById('array').innerHTML = idArr;

    // The length will be same

    console.log(idArr.length);

});

 <div id="array">Item1, Item2</div>

 <button>Click Me</button>

我不太确定你的innerHTML(注意 - 如果你只需要标签之间的内容,更好地使用textContent)的外观。但是您需要将textContent字符串从字符串转换为数组。


const button = document.querySelector('button');


button.addEventListener('click', function() {

  const divContent = document.querySelector('#array').innerHTML

  const idArr = [...divContent.split(',')];

  

  console.log(idArr);


  idArr.push('lorem');

  document.getElementById('array').innerHTML = idArr;

  console.log(idArr.length);

});

<div id="array">Item1,Item2</div>

<button>Click Me</button>


查看完整回答
反对 回复 2021-06-18
  • 3 回答
  • 0 关注
  • 236 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信