За последние 24 часа нас посетил 17441 программист и 1698 роботов. Сейчас ищут 1646 программистов ...

Как вызвать функцию из сылки?

Тема в разделе "JavaScript и AJAX", создана пользователем pr0n1x, 30 янв 2007.

  1. pr0n1x

    pr0n1x Активный пользователь

    С нами с:
    30 мар 2006
    Сообщения:
    486
    Симпатии:
    2
    Адрес:
    Киев
    вот код:

    Код (Text):
    1.  
    2. <head>
    3. <script language="javascript" type="javascript">
    4.  
    5. function search_q()
    6. {
    7. alert('Hello, world!');
    8. }
    9.  
    10. </script>
    11. </head>
    12. <body>
    13. <a href="javascript:search_q();">search</a>
    14. </body>
    но когда я нажимаю на ссылку мне выдается сообщение Object expended. Что тут не так?
     
  2. vb

    vb Активный пользователь

    С нами с:
    6 июн 2006
    Сообщения:
    911
    Симпатии:
    0
    Адрес:
    Saint-Petersburg
    Код (Text):
    1. <a href="javascript:void(0);" onclick='search_q();'>search</a>
     
  3. DarkElf

    DarkElf Активный пользователь

    С нами с:
    22 окт 2006
    Сообщения:
    1.632
    Симпатии:
    0
    <a href='./' onclick='search_q(); return false;'>search</a>

    хотя вроде и начальный вариант должен работать..
     
  4. DarkElf

    DarkElf Активный пользователь

    С нами с:
    22 окт 2006
    Сообщения:
    1.632
    Симпатии:
    0
    мм, так вроде если из onclick'а прилетает false то перехода по урлу не происходит
     
  5. vb

    vb Активный пользователь

    С нами с:
    6 июн 2006
    Сообщения:
    911
    Симпатии:
    0
    Адрес:
    Saint-Petersburg
    DarkElf, а я стер мессагу еще полгода назад :))))
    Да, сначало не заметил return false, но все равно так не правильно, лучше тогда писать # вместо ./
     
  6. pel

    pel Активный пользователь

    С нами с:
    19 янв 2007
    Сообщения:
    569
    Симпатии:
    0
    Адрес:
    Симферополь
    vb, а нужен ли переход? :)
    Как вариант:
    <a href='...' onclick='return search_q();'>search</a>
    В search_q() проверять условие (напр., заполнено ли поле поиска) и в зависимости от этого из функции return true/false;
     
  7. DarkElf

    DarkElf Активный пользователь

    С нами с:
    22 окт 2006
    Сообщения:
    1.632
    Симпатии:
    0
    vb

    а мне лично не нравится такое изменение урлов..

    >>а я стер мессагу еще полгода назад

    ???
     
  8. vb

    vb Активный пользователь

    С нами с:
    6 июн 2006
    Сообщения:
    911
    Симпатии:
    0
    Адрес:
    Saint-Petersburg
    pel, о да меня сейчас будут учить javascript-у :) А это интересно :) что еще?
     
  9. vb

    vb Активный пользователь

    С нами с:
    6 июн 2006
    Сообщения:
    911
    Симпатии:
    0
    Адрес:
    Saint-Petersburg
    DarkElf, но ты ведь сам его делаешь, при этом, в твоем варианте, если JS отключен пользователь уйдет .. куда-то на ./
     
  10. vb

    vb Активный пользователь

    С нами с:
    6 июн 2006
    Сообщения:
    911
    Симпатии:
    0
    Адрес:
    Saint-Petersburg
    Это я про то что между твоими двумя сообщениями я добавил сообщение что в href писать ./ - это не есть хорошо, а потом забил и тут же удалил ее.... а спустя.. минут 10 ты добавил свой ответ на удаленное сообщение :)
     
  11. DarkElf

    DarkElf Активный пользователь

    С нами с:
    22 окт 2006
    Сообщения:
    1.632
    Симпатии:
    0
    vb

    аа..)

    на крайняк, можно туда вместо ./ прописать <?=$_SERVER['PHP_SELF']?>
     
  12. vb

    vb Активный пользователь

    С нами с:
    6 июн 2006
    Сообщения:
    911
    Симпатии:
    0
    Адрес:
    Saint-Petersburg
    Тоже плохое решение.
    Как сейчас помню два дня за которые надо было переделать средненький магазин галандского производства, суть переделки сводилась к избавлению от фреймов.
    Сделал тупо
    .htaccess перенаправляет все запросы на index.php
    тот в свою очередь смотрит что за запрос и если запрос страницы, то подцепляет дизайн и берет контент соответствующей страницы.

    Сложность в том что контентом страниц были другие пхп-файлы, в которых активно использовалось PHP_SELF, в результате, так как вызов был из /index.php файла /shop/result.php SELF_PHP получался не правильный, то есть вместо /shop/result.php мы имели /index.php

    И такое будет всегда и везде где активно используется мод реврайт

    Если ты хочешь подставлять текущий урл используй REQUEST_URI а не PHP_SELF
     
  13. Вльдемар

    Вльдемар Активный пользователь

    С нами с:
    20 май 2006
    Сообщения:
    635
    Симпатии:
    0
    Адрес:
    Белхород
    а обязательно ли ссылка должна быть???
    Я делаю так:
    Код (Text):
    1.  
    2. <span style="cursor: pointer;" onclick="search_q();">Типа ссылка</span>
     
  14. vb

    vb Активный пользователь

    С нами с:
    6 июн 2006
    Сообщения:
    911
    Симпатии:
    0
    Адрес:
    Saint-Petersburg
    Вльдемар, нет не обязательно просто аФФтар просит из ссылки :)
     
  15. pel

    pel Активный пользователь

    С нами с:
    19 янв 2007
    Сообщения:
    569
    Симпатии:
    0
    Адрес:
    Симферополь
    ?? а я не понял вашей иронии :?
    Я имел ввиду, что непонятно, нужен ли переход по ссылке. Может pr0n1x просто упрощенный пример привел, а вообще будет делать... да хоть ту же проверку с последующим переходом.
    :)?


    P.$. Еще можно из ссылки и без href'a
    Код (Text):
    1. <a style="cursor:pointer" onclick='search_q();'>search</a>
     
  16. vb

    vb Активный пользователь

    С нами с:
    6 июн 2006
    Сообщения:
    911
    Симпатии:
    0
    Адрес:
    Saint-Petersburg
    pel, а еще можно document.onclick = search_q(); - вообще без тегов :).
    ирония в том что переход не необходим, но и прописывать его как делает это DarkElf тоже не необходимо, поэтому вопрос "а нужен ли переход" был воспринят тоже как вид иронии :). Кроме того у вас href совсем чем то не тем забит :(

    На какой тэг вешать onclick особого значения нет (http://www.w3schools.com/jsref/jsref_onclick.asp), но раньше, вроде как по правильному считаелось, что если вешаете на <a>, то в href следует прописывать javascript:void(0);

    Сейчас можно покурить тут и закрыть тему:
    http://www.artlebedev.ru/tools/technogrette/html/links/
     
  17. DarkElf

    DarkElf Активный пользователь

    С нами с:
    22 окт 2006
    Сообщения:
    1.632
    Симпатии:
    0
    vb

    на самом деле я там заполнял href только с одной целью - чтобы в строке статуса был виден какой-то путь..

    а-ля пункт 2 вышеуказанной ссылки на АЛ
     
  18. vb

    vb Активный пользователь

    С нами с:
    6 июн 2006
    Сообщения:
    911
    Симпатии:
    0
    Адрес:
    Saint-Petersburg
    DarkElf, ok :)
     
  19. Psih

    Psih Активный пользователь
    Команда форума Модератор

    С нами с:
    28 дек 2006
    Сообщения:
    2.678
    Симпатии:
    6
    Адрес:
    Рига, Латвия
    Вообще есть 2 стандартных метода и без всяких там извращений в виде стилей и.т.д.
    Код (Text):
    1. <a href="javascript:call_function("param"); return false;">text</a>
    и
    Код (Text):
    1. <a href="#" onclick="call_function("param"); return false;">text</a>
    Второй ИМХО лучше, т.к. в строке статуса не видно, что мы вызываем. И надо не забывать ставить return false в обязательном порядке, иначе браузер захочет перейти по ссылке на что, что указано в href
     
  20. DarkElf

    DarkElf Активный пользователь

    С нами с:
    22 окт 2006
    Сообщения:
    1.632
    Симпатии:
    0
    Psih

    javascript off

    иии? и он перейдет как раз в самое начало этой же страницы.
     
  21. avm

    avm Активный пользователь

    С нами с:
    21 сен 2006
    Сообщения:
    597
    Симпатии:
    0
    Адрес:
    Москва
    я не понимаю кто первым придумал делать этот бред - href='#' ? зачем?
    href='' вполне достаточно чтобы сослаться странице на саму себя.

    p.s. по существу - я тоже за то чтобы при наличии onclick, указывать в href если не '', то ту страницу куда нужно отправить юзера при js=off и никаких href='javascript:...'
     
  22. DarkElf

    DarkElf Активный пользователь

    С нами с:
    22 окт 2006
    Сообщения:
    1.632
    Симпатии:
    0
    avm

    а IE 5.5 и младше?
     
  23. Psih

    Psih Активный пользователь
    Команда форума Модератор

    С нами с:
    28 дек 2006
    Сообщения:
    2.678
    Симпатии:
    6
    Адрес:
    Рига, Латвия
    А на него кто-то ещё орентируеться реально?
    Лично я нет, потому что тот функционал, который требуеться сегодня, он не способен обеспечить по причине отстойности своего JavaScript'a (как и опера до 9-й версии)