我正尝试打开一个菜单,右键单击任何课程项目。
var menu = document.getElementById("menu")
function contextMenu(e, atr) {
//some code
}
var document_item = document.getElementsByClassName("item");
for (var i = 0; i < document_item.length; i++) {
var atr = document_item[i].getAttribute("inspect")
document_item[i].addEventListener('contextmenu', function (e) {contextMenu(e, atr) })
}
使用相同的atr值(最后一次加载)调用每个事件
所以atr应该是带有class item的click div的属性
答案 0 :(得分:1)
如果您喜欢这样做,则附加到事件侦听器的函数将始终具有var具有的当前值,因为在事件触发时循环已经结束,它将是最后一个值。您可以使用带有参数的IIFE(立即调用函数执行)“保存”该值:
var menu = document.getElementById("menu")
function contextMenu(e, atr) {
//some code
}
var document_item = document.getElementsByClassName("item");
for (var i = 0; i < document_item.length; i++) {
var atr = document_item[i].getAttribute("inspect")
document_item[i].addEventListener('contextmenu', (function(_atr){ return function (e) {contextMenu(e, _atr) }; })(atr) )
}
正如皮特(Pete)所说,您还可以使用e.currentTarget
在函数中获取属性的值
答案 1 :(得分:1)
您将其隐式包含在事件处理程序中。
import pandas as pd
d = {'name':['bob','john','sue'],'id':[545,689,143],'fte':[1,.5,.75]}
df = pd.DataFrame(d)
# list of columns I want to make upper case
cols = ['id','fte']
newColumns = {oldName: oldName.upper() for oldName in cols}
df.rename(columns=newColumns, inplace=True)
print(df)