HTML
1<!-- tableは省略 -->
2<dialog>
3 <form method="dialog">
4 <div>
5 <button type="submit" value="">D</button>
6 <button type="submit" value="0">0</button>
7 <button type="submit" value="1">1</button>
8 <button type="submit" value="2">2</button>
9 <button type="submit" value="3">3</button>
10 <button type="submit" value="4">4</button>
11 <button type="submit" value="5">5</button>
12 <button type="submit" value="6">6</button>
13 <button type="submit" value="7">7</button>
14 <button type="submit" value="8">8</button>
15 <button type="submit" value="9">9</button>
16 </div>
17 </form>
18</dialog>
JavaScript
1function showModalDialog(dialog) {
2 return new Promise(resolve => {
3 dialog.addEventListener('close', event => {
4 resolve(event.target.returnValue);
5 }, { once: true, passive: true, capture: false });
6 dialog.showModal();
7 });
8}
9
10const modal = document.querySelector('dialog');
11document.querySelector('table').addEventListener('click', function(event) {
12 const target = event.target;
13 if (target.tagName.toLowerCase() === 'td' && target.textContent === '') {
14 showModalDialog(modal).then(value => {
15 target.textContent = value;
16 });
17 }
18}, false);