2016-08-12 4 views
1

Я пытаюсь вызвать функцию JavaScript на HTML-сайте, нажав кнопку (я включил этот код на веб-сайт с помощью Firebug), когда я запускаю следующий код на Notepad ++ или любом другом редакторе, он работает, но когда я скопировать этот код на веб-сайт и нажмите на кнопку, она дает мне:Почему моя функция не срабатывает onclick?

error:: change_value() is not defined

Мой код выглядит так:

JavaScript: (Я скопировал это на заголовочной части веб-страницы)

<script type="text/javascript"> 
function change_value() { 
    alert("Test"); 
} 
</script> 

HTML: (я скопировал это в разделе тела)

<button onclick="change_value()">Click Here !</button > 

Я изо всех кода, написанного только в разделе тела той же ошибки.

+2

Это: _ «я включил этот код на веб-сайте с помощью поджигатель» _ кажется что важно для вашего вопроса - что именно вы пытаетесь сделать здесь? Можете ли вы расширить эту часть? –

+0

Просто выполните функцию в консоли, а не вручную добавьте ее в исходный код. – epascarello

+0

Я думаю, вы должны изменить свой титул. – kamoroso94

ответ

1

Добавление вашего JS-скрипта в исходный код страницы, уже отображаемой (с использованием Firebug или любого отладчика), ничего не сделает, поскольку этот тег (<script>) вычисляется браузером при загрузке страницы.

Вместо этого используйте средства разработки (консоль), чтобы определить вашу функцию; он должен теперь работать правильно.

Редактировать:

Протестировано в Chrome. После ручного добавления кнопки в верхней части страницы, связанной с переполнением стека:

<button onclick="toast()">HELLO</button> 

Я проверил две вещи:

Добавление script тег непосредственно в исходный код:

<script>function toast(){alert("Hello");}</script> 

нажав на кнопка не работала.

Теперь, используя консоль разработки и определяя ту же функцию, нажатие на кнопку правильно отображает предупреждение.

Редактирование 2: Чтобы уточнить, что я имею в виду, используя консоль разработки: обычно в Firebug вы должны увидеть панель «Консоль». Если вы хотите определить функцию js «на ходу» (когда ваша страница уже загружена), просто введите ее определение в консоли; в этом случае:

function toast(){alert("Hello");} 

Он работает совершенно одинаково во всех браузерах.

Как Ахмад Bamieh предлагает в комментариях, вы можете также добавить <script> тег из внешнего скрипта JS, например:

function addScript(src,callback) { 
    var s = document.createElement('script'); 
    s.setAttribute('src', src); 
    s.onload=callback; 
    document.body.appendChild(s); 
} 
+0

это неверно .. функции оцениваются только после нажатия кнопки. на самом деле браузер запускает eval() для строкового значения свойства onclick. если он был определен после или до того, как элемент не имеет значения. его выполнение и оценка при его срабатывании. – Bamieh

+1

@AhmadBamieh Я думаю, вы неправильно поняли; Я полностью согласен с тем, что вы сказали, но я имел в виду, что тег '

Смежные вопросы