我試圖像這樣forEach()將函數(shù)的索引傳遞到函數(shù)參數(shù)中addEventListener:dispensaryLocations.forEach((location, i) => { location.addEventListener('click', clickLocationToOpenMarker(i));});這是clickLocationToOpenMarker()函數(shù): const clickLocationToOpenMarker = id => { infoWindowContents.map(infowindow => { infowindow.close(); }); google.maps.event.trigger(markers[id], 'click'); };對于contex:markers是一組Google Maps標(biāo)記,單擊它們后,打開一個顯示有關(guān)位置信息的信息窗口。infoWindowContents是一個數(shù)組,其中包含每個標(biāo)記的所有相應(yīng)信息窗口。但是,我在這里與Google Maps API無關(guān),更多的是試圖在addEventListener不觸發(fā)參數(shù)的情況下將參數(shù)傳遞給函數(shù)。我的問題是,當(dāng)我addEventListener像這樣傳遞函數(shù)時:element.addEventListener('click' clickLocationToOpenMarker)該函數(shù)按預(yù)期分配給每個元素,而沒有立即調(diào)用并運行。需要注意的是,我需要能夠i像這樣將變量作為參數(shù)傳遞給函數(shù):element.addEventListener('click', clickLocationToOpenMarker(i))這樣,函數(shù)Google Maps Marker才能知道要打開哪個變量。但是,一旦我將參數(shù)添加到函數(shù)的參數(shù)中,與上面的示例不同,該函數(shù)將在forEach()循環(huán)的每次迭代中立即被調(diào)用并觸發(fā)。為什么addEventListener在傳遞參數(shù)時立即觸發(fā)一個函數(shù),但是當(dāng)沒有參數(shù)傳遞給該函數(shù)時,它只是對其進(jìn)行賦值?
Javascript-將具有參數(shù)的函數(shù)添加到addEventListener會導(dǎo)致函數(shù)觸發(fā)
藍(lán)山帝景
2021-05-03 16:57:49