2013-07-26 2 views
1

Так я учусь JavaScript .... Я прошел мимо этого основного материала в моем обучении, но не могу понять, почему это не будет работать:Javascript функция предупреждения странное поведение

function message(){ 
     alert("message"); 
    } 

<button onclick="message()">Click me</button> 

На Js Bin все нормально http://jsbin.com/uwutut/1/edit

На Js скрипке предупреждение не срабатывает !! http://jsfiddle.net/vincentieo/D2dxA/

Это тот же самый код ... копировать и вставлять, поэтому нет причин, по которым js fiddle является суетливым ???

ответ

4

Инфраструктура jsfiddle помещает ваш код в обработчик событий для события «load», если вы этого не скажете. Это означает, что ваша функция является локальной функцией этого обработчика, поэтому она не видна глобально.

На левой стороне пользовательского интерфейса jsfiddle найдите выпадающее меню, где находится код, и выберите «no-wrap (body)». Посмотрите, поможет ли это.

+0

альтернативно: 'window.message = функция() {Alert ("сообщение"); }; ' –

+0

@ ZachL да, это тоже сработает. – Pointy

+0

Да, это имеет смысл ... так что jsfiddle немного настраивается для наших нужд. Это действительно очистило его – vincentieo

0

он отлично работает, если вы перемещаете JavaScript в ваш заголовок

http://jsfiddle.net/D2dxA/2/

<head> 
<script> 
function message(){ 
    alert("message"); 
} 
</script> 
</head> 
+0

Хорошо ... спасибо ... так почему это работает: http://jsfiddle.net/vincentieo/GkEaQ/ – vincentieo

+0

Эта функция не требует DOM. Проблема заключалась в определении области охвата. Обертка кода в обратном вызове 'onload' не открывала его в глобальную область, где он пытался ее вызвать. –

+0

Право получил это .... предположил, что jsfiddle будет сортировать это для меня. СПАСИБО за ответы – vincentieo

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