我有一系列影像。每個影像都是可點擊的并生成一條訊息。影像位于隨機陣列中。這一切都很好。我未能實作的是:單擊影像時,它變得過時了,所以我想用一個新的、不可點擊的影像替換可點擊的影像。我嘗試使用 array.splice 方法如下 newArray=myImages.splice(evt.target,1,newImage) 這將新影像放置在新陣列中的位置 0 而不是原始位置,并且不會生成新影像覆寫舊影像。如果有任何幫助,我將不勝感激。
uj5u.com熱心網友回復:
如果我們猜測evtinnewArray=myImages.splice(evt.target,1,newImage)是一個 Event 物件,evt.target是一個DOM 元素,而不是一個索引。如果這是在您描述的點擊事件中,它將是點擊的影像。
的第一個引數splice是進行更改的索引;一個號碼。DOM 元素不是數字。
splice還回傳已洗掉影像的陣列,而不是更新的陣列。(與mapor之類的方法不同slice,splice它會修改您呼叫它的陣列。)
indexOf您可以通過使用然后我們找到上一個影像的索引splice:
const index = myImages.indexOf(evt.target);
if (index !== -1) {
myImages.splice(index, 1, newImage);
}
或者您可以使用map新影像代替單擊的影像創建一個新陣列:
newArray = myImages.map(img => img === evt.target ? newImage : img);
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/418662.html
標籤:
