Почему моя функция javascript не вызывается в моем div?

Я хочу, чтобы div просто вызывал функцию (не перемещать мою позицию на странице), но вместо вызова моей функции JavaScript - она ​​перемещает мое местоположение на странице

что я делаю неправильно? (выполняется внутри joomla)

Почему моя функция JavaScript не вызывается в моем div?

http://....com/test.php#p3


<div id="p1" onclick="testFunction()"> 
</div>

<div id="p3">Some content</div>
<script type="text/javascript">
   testFunction();
</script>
</div>


<script type="text/javascript">


function testFunction() {
   alert("Test");
}
</script>

Ответ 1

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

<div id="p1" onclick="testFunction()">click me</div>
<div id="p3">Some content</div>
<script type="text/javascript">
testFunction();
function testFunction() {
    alert("Test");
}
</script>

Комментарии, которые вам нужно определить в верхней части, не соответствуют действительности: http://jsfiddle.net/xDf5e/

Они были бы истинными, если бы вы определили функцию переменной типа: var testFunction = function(.... Как правило, вы должны определять функции в верхней части ваших блоков JS, это делает код более читаемым и настраиваемым, но это не причина, по которой ваш script не работает.

Примечание: вы можете видеть, что onclick отлично работает и в примере, который я вам дал.

У вас есть хороший учебник по подъему функции здесь: http://elegantcode.com/2011/03/24/basic-javascript-part-12-function-hoisting/

Ответ 2

Перед использованием следует определить тестовую функцию перед использованием

 <script type="text/javascript">
     function testFunction() {
        alert("Test");
  }
 </script>
 <div id="p1" onclick="testFunction()"> 
 </div>
 <div id="p3">Some content</div>
 <script type="text/javascript">
   testFunction();
 </script>
 </div>