[英]event.currentTarget getting undefined on Chrome
我试图获取在我的 javascript 代码中单击的元素的属性值,但由于某种原因,我得到的值是未定义的。
这是代码:
HTML:
<c:button buttonLabel="Skype" buttonClass="valmetSecondaryButton noMargin" id="I_WANT_THIS_VALUE" onclick="{!c.openSkype}"/>
JS:
console.log(event.currentTarget.id);
这适用于 Internet Explorer,尚未在 Firefox 中测试,但不适用于 Chrome。 也只是为了让您知道我正在使用Lightening Component,Salesforce!
问题解决了:
<span id="{!v.teamMember.email}" onclick="{!c.openSkype}">
<c:button buttonLabel="Skype" buttonClass="valmetSecondaryButton noMargin"/>
</span>
谢谢大家对解决此问题的关注!
该链接帮助我解决了这个问题: https : //salesforce.stackexchange.com/questions/160830/lighting-component-get-html-button-id-in-controller-js-working-in-firefox-not
事件冒泡
尽管您的问题已被标记,因此与salesforce-lightning
没有直接关系,但此线程是搜索evt currentTarget undefined
时的第一个结果,因此我将在此处留下我的一般答案:
我遇到了一个奇怪的问题,即event.currentTarget
在它绝对不应该被定义的时候是undefined
的——它甚至似乎是在事件处理程序的开始时定义的,但后来就消失了。
事实证明,当从事件传递执行时, evt.currentTarget
可能会从事件中消失 - 例如,当await
网络请求或尝试从 setTimeout 访问事件时。
来自 MDN 文档:
注意: event.currentTarget 的值仅在处理事件时可用。 如果您 console.log() 事件 object,将其存储在变量中,然后在控制台中查找 currentTarget 键,其值将是 null。
这也可以通过事件处理程序顶部的以下代码来演示:
console.log(e.currentTarget);
setTimeout(()=> console.log(e.currentTarget), 0);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.