我想处理由id。
选择的多个元素的事件在jQuery中你可以做类似的事情:
$(function () {
$('#id_1, #id_2, #id_3').on('focus', function (e) {
$('#output').html('');
});
});
如何在vanilla Javascript中实现它。
试过这个:
document.addEventListener('DOMContentLoaded', () => {
document.querySelector('#id_1, #id_2, #id_3').addEventListener('focus', () => {
document.querySelector('#output').value = ''
})
})
问题是第二个版本不会触发处理程序。
答案 0 :(得分:2)
querySelector()
返回一个匹配项。使用querySelectorAll()
获取集合中的所有匹配项,并使用for
循环对其进行迭代:
var items = document.querySelectorAll('#id_1, #id_2, #id_3');
for (let item of items) {
item.addEventListener('focus', function(e) { ... });
}
答案 1 :(得分:1)
创建一个选择器数组,然后迭代它们并添加监听器。
const selectors = ['#id_1', '#id_2', '#id_3'];
selectors.forEach((selector) => {
document.querySelector(selector).addEventListener('focus', () => {
console.log('focused ' + selector);
});
});
<input id="id_1"><input id="id_2"><input id="id_3">
答案 2 :(得分:1)
您需要使用import { Component, OnInit } from '@angular/core';
@Component({
selector: 'app-admin',
templateUrl: './admin.component.html',
styleUrls: ['./admin.component.css']
})
export class AdminComponent implements OnInit {
constructor() { }
ngOnInit() {
}
}
并迭代结果
/*!
* Bootstrap v4.0.0 (https://getbootstrap.com)
* Copyright 2011-2018 The Bootstrap Authors
* Copyright 2011-2018 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
*/
:root {
--blue: #007bff;
--indigo: #6610f2;
--purple: #6f42c1;
--pink: #e83e8c;
--red: #dc3545;
--orange: #fd7e14;
--yellow: #ffc107;
--green: #28a745;
--teal: #20c997;
--cyan: #17a2b8;
--white: #fff;
--gray: #6c757d;
--gray-dark: #343a40;
--primary: #007bff;
--secondary: #6c757d;
--success: #28a745;
--info: #17a2b8;
--warning: #ffc107;
--danger: #dc3545;
--light: #f8f9fa;
--dark: #343a40;
--breakpoint-xs: 0;
--breakpoint-sm: 576px;
--breakpoint-md: 768px;
--breakpoint-lg: 992px;
--breakpoint-xl: 1200px;
--font-family-sans-serif: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
--font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
}
/* ..... rest of bootstrap.css */
答案 3 :(得分:1)
Document方法querySelector()
返回文档中与指定选择器或选择器组匹配的第一个元素。
尝试使用querySelectorAll()
返回静态(非实时) NodeList ,表示与指定的选择器组匹配的文档元素列表。
然后使用forEach()
document.addEventListener('DOMContentLoaded', () => {
document.querySelectorAll('#id_1, #id_2, #id_3').forEach(input => {
input.addEventListener('focus', (el) => {
console.log(input.id + ' focused');
});
});
});
<input id="id_1"><input id="id_2"><input id="id_3">