Каждый раз, когда я щелкаю мышью по <body>, моя созданная функция запускается - PullRequest
0 голосов
/ 03 октября 2019

Я хочу новый абзац каждый раз, когда нажимаю на кнопку, созданную мной с помощью innerhtml

Я выполнил правильный синтаксис в JavaScript. Я хочу, чтобы мой абзац изменялся только при нажатии на созданную мной кнопку.

var button = document.getElementById("createpara"); 

document.getElementById("showpara").innerHTML;

function writepara() {

    document.getElementById("showpara").innerHTML = '<p>This is IT</p>';
}

document.addEventListener("click",writepara, false);

Я хочу, чтобы мой абзац изменялся только при нажатии на созданную мной кнопку.

Ответы [ 2 ]

2 голосов
/ 03 октября 2019

Вы должны сделать так:

button.addEventListener("click",writepara); 

вместо

document.addEventListener("click",writepara); 
0 голосов
/ 03 октября 2019

Добавить к комментарию @ MohammedHendy

Когда вы связываете прослушиватель событий, он иерархический. Он будет поднимать DOM и запускать все прослушиватели событий, пока не достигнет самого верхнего узла.

Например:

если у меня есть это:

<div>
   <button>Text</button>
<div>

, и я помещаю прослушиватель событий в div, но не в button, когда кнопка нажата, это как если бы я нажал на div.

Если я хочу, чтобы событие запускалось только при нажатии кнопки, тогда ONLY установите прослушиватель событий на button

, если вы применили егодо document, который представляет всю страницу. Это все равно что сказать "If you click ANYWHERE on this page, I want this function to run"

...