Хорошо, я видел скрипку.В теории это должно работать.Проблема заключается в том, что JS Fiddle помещает код js в область, в которой ваша форма не может его найти.
Если вы откроете консоль, вы увидите сообщение «функция myFunction не существует».И если вы увидите, как JS Fiddle визуализировал ваш код, вы увидите, что function myFunction ()
находится внутри другой функции, которая помещает его НЕ в глобальную область, недоступную для любого html-элемента.
Если вам нужна рекомендацияЯ бы немного изменил HTML.например:
Удалите onclick="myFunction()"
из html и вместо этого добавьте идентификатор для этой кнопки
<button id="btn-to-apply-defaults">...
Перестройте функцию так, чтобы она выглядела так:
document.getElementById("btn-to-apply-defaults").addEventHandler("click", function () {
// here go the contents of the original myFunction()
});
Это то, что некоторые называют «ненавязчивым» js, что означает, что js не привязан к элементам непосредственно в самом html-элементе, вместо этого вы связываете событие позже.
Если это все еще неработать, это потому, что кнопка может еще не существовать в DOM, когда вы делаете getElementById
.Это потому, что JS Fiddle вставляет скрипт выше html.У вас есть два варианта:
- указать JS Fiddle, чтобы поместить js внизу файла (см. Выпадающий список над редактором js)
- , связать элемент следующим образом (пример сjquery):
$(document).on("click", "#btn-to-apply-defaults", function () {
// here go the contents of the original myFunction()
});
Событие привязано к самому document
, который обязательно существует в этой точке, но срабатывает только тогда, когда currentTarget равен #btn-to-apply-defaults