【发布时间】:2020-10-19 19:00:17
【问题描述】:
我有一个网页,我试图在其中选择和替换/删除一个值。当我单击选择时,在控制台中它显示我正在选择我要选择的项目,但是当将值输入到 splice 命令中时,它只会更改数组的第一个条目。
第一个功能是根据位置选择条形,截面功能是条形数组值,然后出现条形和按钮的位置,如果值为-1,它将删除该值,否则将替换它
function clickBar(Event) {
//Receives position in xy for user clicks
var posX = Event.clientX;
var posY = Event.clientY;
console.log("X = "+posX +" Y = "+ posY);
var barWidth= 500/barVals.length;
console.log("Bar Width = "+barWidth);
var barNum;
//checks to see if click was within the confines of the area that the boxes are displayed
//if so barNum is calculated to show which position in the array you are clicking on
if(posY >topY && posY < bottomY && posX > leftX && posX < rightX){
console.log("Inside");
barNum = Math.floor((posX - leftX) / barWidth);
console.log("Bar Number = "+barNum);
} else {
console.log("Outside");}
if (barNum > -1) {
replaceBar(barNum)
}
console.log(barVals);
draw();
}
document.addEventListener("click", clickBar);
function replaceBar(barNum) {
console.log("Bar Number2 = "+barNum);
var replaceBox = document.getElementById('replaceVal');
var replaceBtn = document.getElementById('replaceBtn');
var displayBoxSetting = replaceBox.style.display;
var displayBtnSetting = replaceBtn.style.display;
//hiding and displaying the edit text box and button
if (displayBoxSetting == 'block' && displayBtnSetting=='block') {
replaceBox.style.display = 'none';
replaceBtn.style.display = 'none';
}
else {
replaceBox.style.display = 'block';
replaceBtn.style.display = 'block';
}
//Used to replace the value of the
if(replaceBox.value >0) {
barVals.splice(barNum, 1, parseInt(replaceBox.value));
colours.push(document.querySelector('input[name="colour"]:checked').value);
replaceBox.value = 0;
draw(); // redraw
}
else if(replaceBox.value == -1){
barVals.splice(barNum, 1);
replaceBox.value = 0;
draw(); // redraw
}
textBoxObj.value = 0;
replaceBox.style.display = 'none';
replaceBtn.style.display = 'none';
draw(); // redraw
}
问题是:
if(replaceBox.value >0) {
barVals.splice(barNum, 1, parseInt(replaceBox.value));
应该从位置barNum开始,长度为1,取替换框的int值,用它来拼接值
编辑 - 我在替换Screenshot of page 之前和2nd Screenshot 之后包含了页面图像
【问题讨论】:
-
console.log(replaceBox.value)显示什么?另外,请发布相关的HTML。 -
我在尝试替换前后的页面上方添加了一张图片。 console.log(replaceBox.value) 显示输入到第二个文本框中的值,用于替换您单击的值
-
请问
console.log你的barVals数组,我希望barNum小于barVals.length -
感谢您的评论。这是一个Image of console,它显示了条形数组的值(1 是第二个值,选择 3),它显示了之前的数组,将替换第二个值的替换条的值,然后是第二个数组,它在哪里而是总是替换第一个。是的,你是对的,barNum 小于 barVal.length,因为它只能在画布中选择,但你是对的,我应该检查一下。
标签: javascript arrays splice