array.length 在 push() 上不增加

我将字符串推送到数组并在文本区域中显示元素。数组在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%>')">



繁花如伊
浏览 237回答 3
3回答

翻阅古今

您需要在函数外部定义变量,以防止每次调用函数时都初始化它,试试这个:var IDarr = [];function UpdBttn(ct){&nbsp; var array = document.getElementById('array').innerHTML;&nbsp; IDarr.push(ct);&nbsp; document.getElementById('array').innerHTML = IDarr;&nbsp; alert(IDarr.length);}

DIEA

我不确定您要实现的目标,但您可能会执行以下操作:function UpdBttn(ct){&nbsp; var array = document.getElementById('array').innerHTML;&nbsp; var IDarr = array.split(',');&nbsp; IDarr.push(ct);&nbsp; document.getElementById('array').innerHTML = IDarr.join(',');&nbsp; alert(IDarr.length);}

白板的微信

innerHTML返回一个字符串。因此,当您使用var array = document.getElementById('array').innerHTML;它检索数组时,它是单个字符串。所以你的数组中有一个字符串元素,在推送另一个元素后它变成了两个。const button = document.querySelector('button');button.addEventListener('click', function() {&nbsp; &nbsp; const divContent = document.querySelector('#array').innerHTML&nbsp; &nbsp; const idArr = [divContent];&nbsp; &nbsp; console.log(idArr);&nbsp; &nbsp; &nbsp;&nbsp; &nbsp; idArr.push('lorem');&nbsp; &nbsp; document.getElementById('array').innerHTML = idArr;&nbsp; &nbsp; // The length will be same&nbsp; &nbsp; console.log(idArr.length);});&nbsp;<div id="array">Item1, Item2</div>&nbsp;<button>Click Me</button>我不太确定你的innerHTML(注意 - 如果你只需要标签之间的内容,更好地使用textContent)的外观。但是您需要将textContent字符串从字符串转换为数组。const button = document.querySelector('button');button.addEventListener('click', function() {&nbsp; const divContent = document.querySelector('#array').innerHTML&nbsp; const idArr = [...divContent.split(',')];&nbsp;&nbsp;&nbsp; console.log(idArr);&nbsp; idArr.push('lorem');&nbsp; document.getElementById('array').innerHTML = idArr;&nbsp; console.log(idArr.length);});<div id="array">Item1,Item2</div><button>Click Me</button>
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript