У меня такое событие щелчка
<button (click)="toggle($event)" class="someclass" id="btn1"></button>
<button (click)="toggle($event)" class="someclass" id="btn2"></button>
Я улавливаю событие в параметре ввода моей функции и хочу узнать, какая именно кнопка была нажата.
toggle(event) {
}
но event
не имеет id
собственности.
altKey: false
bubbles: true
button: 0
buttons: 0
cancelBubble: false
cancelable: true
clientX: 1198
clientY: 29
ctrlKey: false
currentTarget: button#hdrbtn_notificaton.mdl-button.mdl-js-button.mdl-js-ripple-effect.mdl-button--icon
defaultPrevented: false
detail: 1
eventPhase: 3
fromElement: null
isTrusted: true
isTrusted: true
layerX: -566
layerY: 5
metaKey: false
movementX: 0
movementY: 0
offsetX: 22
offsetY: 13
pageX: 1198
pageY: 29
path: Array[13]
relatedTarget: null
returnValue: true
screenX: 1797
screenY: 148
shiftKey: false
sourceCapabilities: InputDeviceCapabilities
srcElement: span.mdl-button__ripple-container
target: span.mdl-button__ripple-container
timeStamp: 1458032708743
toElement: span.mdl-button__ripple-container
type: "click"
view: Window
webkitMovementX: 0
webkitMovementY: 0
which: 1
x: 1198
y: 29
Как я могу найти id
?
ОБНОВЛЕНИЕ: Plunkers все хороши, но в моем случае у меня локально:
event.srcElement.attributes.id
- undefined
event.currentTarget.id
- имеет значение
Я использую Chrome последней версии 49.0.2623.87 m
Может ли это быть Material Design Lite
? потому что я им пользуюсь.
id
?id
вместе с параметрами.id
?event.currentTarget.id
Ответы:
Если вы хотите получить доступ к
id
атрибуту кнопки, вы можете использоватьsrcElement
свойство события:См. Этот plunkr: https://plnkr.co/edit/QGdou4?p=preview .
См. Этот вопрос:
источник
event.srcElement.attributes.id
не определено не знаю почему ... но я нашелid
вevent.currentTarget.id
currentTarget
не определено :-( Какой браузер вы используете?angular2.dev.js:23597 TypeError: Cannot read property 'nodeValue' of undefined
var target = event.srcElement.attributes.id || event.currentTarget.id;
Для пользователей TypeScript:
источник
const elementId: string = (event.target as Element).id;
Наконец-то нашел самый простой способ:
источник
<button ...><i class="fa fa-check"></i></button>
и вы действительно щелкаете этотi
элемент, который является компонентом FontAwasome, тогда event.target - это не элемент,button
аi
элемент.button
элемент, используйтеevent.target.closest('button')
.Вы можете просто передать статическое значение (или переменную из
*ngFor
или что-то еще)<button (click)="toggle(1)" class="someclass"> <button (click)="toggle(2)" class="someclass">
источник
id
в таком случае?id
просто выберите индекс из массива или около того. Часто удивительно, что мы так часто упускаем из виду самые простые решения.Нет необходимости передавать все мероприятие (если вам не нужны другие аспекты мероприятия, чем вы указали). На самом деле это не рекомендуется. Вы можете передать ссылку на элемент с небольшими изменениями.
Демо StackBlitz
Технически вам не нужно искать кнопку, по которой вы нажали, потому что вы передали фактический элемент.
Угловое наведение
источник
Когда ваш
HTMLElement
не имеетid
,name
илиclass
для вызова,затем используйте
источник
сделать это просто: (как сказано в комментарии, вот с примером с двумя методами)
демо: http://plnkr.co/edit/5kJaj9D13srJxmod213r?p=preview
источник
event.srcElement.attributes.id
не определено в моем случае не знаю почему ... но я нашелid
вevent.currentTarget.id
event
увольнения, где вы можете видетьid
event.target.id
он также может иметь значение idВы можете использовать его интерфейс
HTMLButtonElement
, наследуемый от своего родителяHTMLElement
!Таким образом, у вас будет возможность автозаполнения ...
Чтобы увидеть весь список HTMLElement из документации Консорциума World Wide Web (W3C)
Демо StackBlitz
источник
Если вы хотите получить доступ к
id
атрибуту кнопки в angular 6, следуйте этому кодуты
id
в значении,величина
value
ISmyId
.источник