直接单击图标时未传递按钮的值属性

1rhkuytd  于 2021-09-23  发布在  Java
关注(0)|答案(1)|浏览(384)

我有一个使用引导创建的html按钮,它本质上是一个用于切换网站上项目状态的图标。

  1. <button class='btn' value='${noteid}' onclick='toggleAck(event)'><i class="fas fa-eye"></i></button>

单击时,将触发一个请求:

  1. function toggleAck(event) {
  2. const noteid = event.target.value
  3. console.log(event.target)
  4. $.post({
  5. url: `/note/${noteid}/toggleacknowledge`,
  6. dataType: "json"
  7. },
  8. (response) => {
  9. if (!response.success) {
  10. alert("Failed to mark as read")
  11. }
  12. refreshNotes()
  13. }
  14. )
  15. }

无论我是单击按钮还是图标,toggleack事件都会触发。但是,如果我直接单击图标而不是按钮 value 属性未传递,函数失败。
如何修复此html,以便无论用户单击何处,都能传递值?

ivqmmu1c

ivqmmu1c1#

这个 value 在按钮上,但是 event.target 是触发事件的元素,因此当您单击图标时,它会尝试从图标中检索值。
改用 event.currentTarget 从侦听器附加到的元素中获取值。

  1. const noteid = event.currentTarget.value;
  1. function toggleAck(event) {
  2. console.log('target: ', event.target, event.target.value);
  3. console.log('currentTarget: ', event.currentTarget, event.currentTarget.value);
  4. }
  1. <button class='btn' value='${noteid}' onclick='toggleAck(event)'><i class="fas fa-eye">icon</i></button>

相关问题