Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Почему не работает JavaScript?
 
 автор: coloboc66   (03.09.2006 в 22:00)   письмо автору
 
 

Получаю абсолютно чистую страницу...

<head>
<script>
var theData=document.createElement('IMG');
theData.setAttribute('src','001.jpg');
theData.style.cursor='hand';
theData.onclick="func()";
document.body.appendChild(theData);
function func()
{
alert('Hi');
}
</script> 
</head> 
<body>

   
 
 автор: RMW   (03.09.2006 в 22:32)   письмо автору
 
   для: coloboc66   (03.09.2006 в 22:00)
 

Скорей всего нужно запускаться
только после полной загрузки страницы.

   
 
 автор: RMW   (03.09.2006 в 23:31)   письмо автору
 
   для: RMW   (03.09.2006 в 22:32)
 

Да по body onload работает нормально,
правда в IE обработчик события для onclick
не работает, это вообще гемор назначать
из JS обработчики. По идее нужно 2-ве
версии кода для IE и для нормальных бр-в,
но впрочем работает так: theData.onclick=func;

   
 
 автор: Padonak   (04.09.2006 в 00:26)   письмо автору
 
   для: RMW   (03.09.2006 в 23:31)
 

никаких 2 версий не надо просто пишите код по-человечески:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
<head>
<title>My shit demo</title> 
<script language="JavaScript" type="text/javascript">
function myShit(){
var pic = document.createElement("img");
pic.setAttribute("src","001.jpg");
pic.setAttribute("width","300");
pic.setAttribute("height","300");
pic.style.cursor = "pointer";
pic.onclick = function(){
alert('Hi');
}
pic.onmouseover = function(){
this.style.border = "1px dashed #000";
}
pic.onmouseout = function(){
this.style.border = "none";
}
document.body.appendChild(pic);
}
</script>  
</head>  
<body onload="myShit()"> 
</body>
</html>

   
 
 автор: RMW   (04.09.2006 в 01:24)   письмо автору
 
   для: Padonak   (04.09.2006 в 00:26)
 

И так гоже.
Но молва идёт, будто в IE память куда-то
утекает при использовании неименованных
функций
http://htmlcoder.visions.ru/JavaScript/?29
но если их (функций) чуть-чуть, то много не утечёт.

А две версии кода не нужны действительно.
Но наверное понадобятся
если назначать обработчики через setAttribute().

   
 
 автор: coloboc66   (04.09.2006 в 09:34)   письмо автору
 
   для: RMW   (04.09.2006 в 01:24)
 

Вот что непонятно- в учебниках для чайников никогда не упоминается такой пример использования функций, как предложено у вас. В учебниках предлагают сначала функцию объявить отдельно, с тем чтобы потом можно было ее вызывать из любого места страницы. Что я и сделал в моем первом сообщении. По идее все логично, а на практике не работает, а работает так, как предлагаете вы:

pic.onclick = function(){ 
alert('Hi'); 


Путаница какая-то в голове получается. И потом: вызов функции должен выглядеть так:

func();

А приходится почему-то писать

func;

Фиг разберешь... И кстати- что такое неименованная функция?

   
 
 автор: RMW   (04.09.2006 в 13:16)   письмо автору
 
   для: coloboc66   (04.09.2006 в 09:34)
 

Ну, под неименованной функцией я это самое и подразумевал
function(){}
У меня в учебнике есть приблизительно
такие примеры:
из главы
Обработчики событий как атрибуты
...атрибуты html тегов

<form name="f1">
<input type="button" name="b1" value="Нажми меня" onclick="alert('Спасибо!');">
</form>

из главы
Обработчики событий как свойства
...свойства объектов JS

<form name="f1">
<input type="button" name="b1" value="Нажми меня">
</form>


document.f1.b1.onclick=function(){alert('Спасибо!')}

или

function myFunc(){alert('Спасибо!')}
document.f1.b1.onclick=myFunc;

и далее: (точная цитата)
Обратите особое внимание на последнюю строку: здесь
после имени функции нет скобок.
Чтобы определить обработчик события, мы присваиваем
свойству-обработчику события саму функцию,
а не результат её вызова. На этом часто спотыкаются
начинающие программисты JavaScript.

Непонятно конечно ничего,
но вот... так написано:)
А вот кстати сама функция,
а не результат её вызова

alert(myFunc);

   
 
 автор: coloboc66   (04.09.2006 в 13:52)   письмо автору
 
   для: RMW   (04.09.2006 в 13:16)
 

Все вроде бы понял, кроме последнего кода (alert(myFunc); ). Так что- я могу установить обработчик события в качестве атрибута?!

var img1=document.createElement('img');
img1.setAttribute('onclick', func);
document.body.appendChild(img1);
function func()
{
alert('Hi');
}

Вот так?!
Да- так получилось!

   
 
 автор: coloboc66   (04.09.2006 в 14:01)   письмо автору
 
   для: coloboc66   (04.09.2006 в 13:52)
 

А если мы делаем так:

function myFunc(){alert('Спасибо!')} 
document.f1.b1.onclick=myFunc; 

То как передать в функцию параметры?

   
 
 автор: RMW   (04.09.2006 в 20:36)   письмо автору
 
   для: coloboc66   (04.09.2006 в 14:01)
 

Возможно эта статья покажется небезынтересной.
http://xpoint.ru/know-how/JavaScript/Atributyi?8
алерт(myFunc) - это я к тому, что вернёт алерт
если функцию вызвать без ()
пример:

function someFunc(){return 123;}
//возвращает "саму функцию"
alert(someFunc);
//возвращает результат вызова фн-ции
alert(someFunc());

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования