Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/9: Рейтинг темы: голосов - 9, средняя оценка - 4.56
 Аватар для Heleg
209 / 209 / 6
Регистрация: 23.10.2011
Сообщений: 971

События в javascript и область их видимости

14.05.2012, 17:37. Показов 1957. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
совершенно запутался как организованы события.
JavaScript
1
2
3
4
5
6
7
8
//у нас есть элемент (якорь) 
var button = document.createElement('a');
 
//ставим ему атрибут href
button.setAttribute('href',"#");
 
//вешаем событие onclick
button.onclick = start() ;
теперь при нажатии ссылка перекидывает нас вверх экрана. куда нужно вписать return false; , чтобы этого не было??
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
14.05.2012, 17:37
Ответы с готовыми решениями:

Область видимости
Есть код,полностью рабочий,но это-то мне и странно,ведь переменная i1 определена в функции p1(), а значит только в ней и должна быть...

Область видимости
Есть страница index.php function send(){ include 'connect.php'; connect(); return $tablename; //ничего нет } ...

Область видимости
func { int someVariable; { int someVariable; //можно ли как нибудь получить доступ к переменной...

14
супермизантроп
Эксперт JS
3941 / 2979 / 692
Регистрация: 18.04.2012
Сообщений: 8,629
14.05.2012, 17:56
JavaScript
1
2
3
4
5
6
7
8
9
10
//у вас НЕТ элемента (якоря), вы его создаёте
 
//метод setAttribute рекомендован для установки НЕСТАНДАРТНЫХ атрибутов
//стандартные атрибуты рекомендуется устанавливать простым присвоением
//в вашем случае надо вот так - button.href = '#';
 
//вы не "навесили" событие onclick
//используя жаргон, можно сказать, что вы "навесили" НА событие onclick исполнение функции start ()
//причём "навесили" неправильно - имя назначаемой функции прописывается без скобок
//в вашем случае надо вот так - button.onclick = start;
return false можно прописать только прямо в теге <A>, в HTML-коде.
А когда используете программное назначение функции, то следует использовать в этой функции свойства события preventDefaultreturnValue - для MSIE)
Примерно так:
JavaScript
1
2
3
4
5
6
7
8
9
10
function start (ev)
{
var e = ev || window.event; 
//то, что делает ваша функция, например:
alert (123);
 
//отмена дефолтного действия
if (e.preventDefault) e.preventDefault (); 
else e.returnValue = false;
}
Но вообще можно и проще, безо всякого onclick.
Пропишите просто
button.href = 'javascript: start ()';
а в функции start () оставьте только "ваши действия" - строку с alert (123)
0
 Аватар для Heleg
209 / 209 / 6
Регистрация: 23.10.2011
Сообщений: 971
14.05.2012, 18:16  [ТС]
Цитата Сообщение от kalabuni Посмотреть сообщение
return false можно прописать только прямо в теге, в HTML-коде.
эталон быдлокода. плюс элемент создается скриптом.
Цитата Сообщение от kalabuni Посмотреть сообщение
у вас НЕТ элемента (якоря), вы его создаёте
ок, он у нас есть, после того, как его создали

Цитата Сообщение от kalabuni Посмотреть сообщение
метод setAttribute рекомендован для установки НЕСТАНДАРТНЫХ атрибутов
толстенный презерватив для IE

Цитата Сообщение от kalabuni Посмотреть сообщение
причём назначили неправильно
согласен, просто криво отредактировал, сначала было
JavaScript
1
button.onclick = function() { start_test(); /* прочая фигня */}
Цитата Сообщение от kalabuni Посмотреть сообщение
preventDefault
не jQuery ли?
0
Просто любитель
 Аватар для GuardCat
626 / 464 / 120
Регистрация: 20.01.2011
Сообщений: 865
Записей в блоге: 2
14.05.2012, 18:17
Цитата Сообщение от kalabuni Посмотреть сообщение
[JS]
return false можно прописать только прямо в теге <A>, в HTML-коде.
Это не так. Вот пример.
0
 Аватар для Heleg
209 / 209 / 6
Регистрация: 23.10.2011
Сообщений: 971
14.05.2012, 18:22  [ТС]
Цитата Сообщение от GuardCat Посмотреть сообщение
Это не так
вот тоже хотел выслать пример, да ссылка не работает((
0
супермизантроп
Эксперт JS
3941 / 2979 / 692
Регистрация: 18.04.2012
Сообщений: 8,629
14.05.2012, 18:23
Нет, не Jquery.
Стандартное свойство объекта event в Mozilla - https://developer.mozilla.org/... entDefault
И аналогичное в MSIE - http://msdn.microsoft.com/en-u... 85%29.aspx
0
 Аватар для Heleg
209 / 209 / 6
Регистрация: 23.10.2011
Сообщений: 971
14.05.2012, 18:26  [ТС]
всё равно они тут без надобности
0
супермизантроп
Эксперт JS
3941 / 2979 / 692
Регистрация: 18.04.2012
Сообщений: 8,629
14.05.2012, 18:27
GuardCat, нельзя прописать на событие onclick.
Потому что именно и только onclick имеет у ссылок дефолтное продолжение - а именно переход страницы по URL, указанному в атрибуте HREF.

А на все прочие события - onmousedown, onmouseup, onmouseover и т.д. - пишите, что хотите.
Это как надписи на заборах писать - от этих надписей никому ни холодно, ни жарко
0
 Аватар для Heleg
209 / 209 / 6
Регистрация: 23.10.2011
Сообщений: 971
14.05.2012, 18:28  [ТС]
Цитата Сообщение от kalabuni Посмотреть сообщение
button.href = 'javascript: start ()';
я не разделяю большинство мыслей, но всё же http://javascript.ru/unsorted/why_href_js_is_bad
0
 Аватар для Heleg
209 / 209 / 6
Регистрация: 23.10.2011
Сообщений: 971
14.05.2012, 18:31  [ТС]
kalabuni, я из-за тупого мака не могу копирнуть, попробуй сам
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
<!DOCTYPE html>
<html>
<head><title>index</title></head>
 
<body>
    
<a id="a" href="http://www.google.com">привет</a> 
<script type="text/javascript" charset="utf-8">
    document.getElementById('a').onclick = function() { return false; } 
</script>
 
</body>
</html>
тебя это удивит
0
 Аватар для Heleg
209 / 209 / 6
Регистрация: 23.10.2011
Сообщений: 971
15.05.2012, 22:09  [ТС]
ну, короче, если кому то пригодится. чуть отдохнул и пришел в мысли
JavaScript
1
2
3
4
5
6
7
8
//создаем элемент-ссылку
var button = document.createElement('a');
 
//ставим ему атрибут href
button.setAttribute('href',"#");
 
//вешаем событие onclick, и дописываем return false, чтобы ссылка не перебрасывала нас вверх
button.onclick = function() { start(); return false;}
0
Заблокирован
15.05.2012, 23:45
да, так можно.

но если рассматривать вашу задачу в её изначальном виде,
когда вы дали код
JavaScript
1
2
3
var button = document.createElement ('a');
button.setAttribute ('href',"#");
button.onclick = start;
и спросили - куда вставить return false?
вам совершенно правильно ответили,
что после написания вами button.onclick = start; уже никуда нельзя вставить return false.
например, если вставить return false в конец функции start () - нужного вам эффекта не будет.
а вы не поняли.
и, походу, до сих пор не понимаете.
0
210 / 204 / 52
Регистрация: 25.07.2010
Сообщений: 1,162
16.05.2012, 11:05
Цитата Сообщение от Notortep Посмотреть сообщение
что после написания вами button.onclick = start; уже никуда нельзя вставить return false.
Можно в функцию
JavaScript
1
2
3
function start(){
 return false;
}
0
 Аватар для Heleg
209 / 209 / 6
Регистрация: 23.10.2011
Сообщений: 971
16.05.2012, 12:20  [ТС]
Notortep, я то всё понимаю, а тот парень и вы используете крайне усложненное решение простейшей проблемы, и причиной этому служит лишь недостаточное знание матчасти. в этом нет ничего дурного, если человек действительно обсуждает свои решения и слушает мнения других, а не доказывает с пеной у рта свою правоту и не переводит всё на "я вам помог, но вы ,видимо, недостойны оценить всё изящество и блеск моего ума".
0
16.05.2012, 12:35

Не по теме:


Цитата Сообщение от Heleg Посмотреть сообщение
"я вам помог, но вы ,видимо, недостойны оценить всё изящество и блеск моего ума".
Вот один в один, ага )))

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
16.05.2012, 12:35
Помогаю со студенческими работами здесь

Область видимости
Дня два назад меня дёрнуло наконец понять что из себя представляет до - диез. Начал я с банальной вещи - квадратное уравнение. ...

Область видимости
Здравствуйте. Тут такое дело: #include &lt;vector&gt; class SomeClass { public: SomeClass( std::vector&lt; int &gt; v ) : vec( v ) {}...

Область видимости
Доброго времени суток! Есть вопрос по поводу области видимости. Являюсь новичком и туплю :( Есть две кнопки, с помощью одной считаю, с...

Область видимости
Есть хтмл страница. В нее подключаются два js скрипта, условно назовем их file1 and file2. В file1 есть обработчик нажатия кнопок. В...

Область видимости
Есть код: $id = 0; $res = $link-&gt;query( &quot;SELECT id, last_update FROM `before` WHERE last_update = (SELECT...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а привычная функция main(). . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru