在javascript中使用add方法更新数组
我有一个静态数组,可以循环显示三列 男孩,女孩和所有人 到目前为止,我添加了一个循环方法,该方法显示数组中的所有元素:在javascript中使用add方法更新数组,javascript,arrays,Javascript,Arrays,我有一个静态数组,可以循环显示三列 男孩,女孩和所有人 到目前为止,我添加了一个循环方法,该方法显示数组中的所有元素: boys.forEach(function(boy) { strboy += '<li>'+ boy + '</li>'; }); strboy += '</ul>'; document.getElementById("boys").innerHTML = strboy; 这是可行的,新数组被记录到控制台,但是在用户添加
boys.forEach(function(boy) {
strboy += '<li>'+ boy + '</li>';
});
strboy += '</ul>';
document.getElementById("boys").innerHTML = strboy;
这是可行的,新数组被记录到控制台,但是在用户添加新元素之后,我如何更新UI呢。我尝试不使用匿名函数,但随后整个新数组再次显示,我只希望显示新数组。我更喜欢只使用普通JavaScript而不使用JQuery 将代码放入函数中,每次添加一个新成员时,只需调用它即可
boys=['Mario','Pepe']
函数updateUi(){
strboy=“”;
boys.forEach(函数(boy){
strboy+='- '+boy+'
';
});
strboy+='
';
document.getElementById(“boys”).innerHTML=strboy;
}
函数addboy(){
var boy='Jhon Doe'
男孩。推(男孩);
updateUi()
}
updateUi()
添加男孩
您不必全部重画。只需添加一个元素!因此,没有jQuery,您可以编写(如果'boys'是ulid)
函数addBoy(boy){
让currentBoys=document.getElementById(“boys”).innerHTML;
document.getElementById(“boys”).innerHTML=currentBoys+''+boy+' ';
}
使用ES6
/**
*使用给定的男孩初始化男孩列表
*/
函数init(initialBoys){
const str=initialBoys.reduce((tmp,x)=>`${tmp}${x} `,);
document.getElementById('boys').innerHTML=str;
}
/**
*生成一个介于0和max之间的随机数
*/
函数getRandomInt(最大值){
返回Math.floor(Math.random()*Math.floor(max));
}
/**
*在列表中添加新男孩,从预定义列表中拾取男孩
*随便捡起来
*/
函数addRandomNewBoy(){
常数可用项=[
“基督徒”,
“阿米尔”,
“朱利安”,
“Rorelio”,
“胡安”,
“格里戈里”,
“圣诞老人”,
“小老鼠”,
“你妈妈”,
];
addBoy(availableBoys[getRandomInt(availableBoys.length-1)];
}
/**
*在名单上加一个男孩
*/
函数addBoy(boy){
让str=document.getElementById('boys').innerHTML;
str=`${str}${boy} `;
document.getElementById('boys').innerHTML=str;
}
/**
*启动男孩列表的初始化
*/
初始化([
“大卫”,
“艾略特”,
]);代码>
添加一个好的boi
将您的第一个代码包装到一个函数中,然后再次运行该函数以更新UI。您是否在寻找可观察的对象?问题是,整个数组将再次显示,而不仅仅是新数组。即使我在window.onload()上调用该函数。@baileyaldwin此方法也能帮助您:Element.insertAdjacentHTML()
perfect在需要的地方附加一段HTML。
function addboy(){
var boy=document.getElementById('newboy').value
boys.push(boy);
console.log(boys);
}
function addBoy(boy){
let currentBoys = document.getElementById("boys").innerHTML;
document.getElementById("boys").innerHTML = currentBoys + '<li>' + boy + '</li>';
}