Почему функция click() не вызывается?

Рейтинг: 2Ответов: 3Опубликовано: 31.01.2023
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>test</title>
</head>
<body>
    <button onclick="click()">Click</button>
    <script>
    function click() {
        console.log('Hello world');
    }
    </script>
</body>
</html>

Ответы

▲ 2Принят

Не используйте зарезервированные методы элементов HTML для имен функций, которые вы передаете в строковые значения атрибутов on*.

Например для click() и button, запись onclick="click()" интерпритируется как вызов button.click() т.к. у button есть метод click

Назовите функцию по другому и заработает

function myClick() {
    console.log('Hello world');
}

Однако!

Т.к. функция создается в window, то сработает, если мы вызовем функцию следующим образом window.click()

<button onclick="window.click()">Click</button>
<script>
function click() {
    console.log('Hello world');
}
▲ 0

Не понимаю почему это влияет на работоспособность, но дело в названии функции.

<button>Click</button>
<script>
function onClick() {
    console.log('Hello world');
}
</script>

▲ 0

Видимо, дело в названии, попробуйте переименовать функцию:

function onClick() {
    console.log('click');
}