За последние 24 часа нас посетили 17137 программистов и 1246 роботов. Сейчас ищут 974 программиста ...

JavaScript проблема с onclick

Тема в разделе "JavaScript и AJAX", создана пользователем neuro, 29 май 2007.

  1. neuro

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

    С нами с:
    23 янв 2007
    Сообщения:
    66
    Симпатии:
    0
    на страничке есть текстовое поле ("text1") и текст ("пример")
    при клике на текст, этот текст должен попадать в текстовое поле

    Код (Text):
    1.  
    2. echo '
    3. <script type="text/javascript" language="JavaScript">
    4.  
    5. function do()
    6. {
    7. content=\'<a onclick=setvalue("пример")>\'+пример+\'</a>\';
    8. document.getElementById(\'menu1\').innerHTML=content;
    9. }
    10.  
    11. function setvalue(vl)
    12. {
    13.   document.getElementById("text1").value=vl;
    14. }
    15.  
    16. </script>
    17. ';
    проблема такая, если в функцию setvalue передаю число или текст без пробелов, то все работает, текст попатает в текстовое поле ("text1").
    А вот если передаю текст с пробелами, например "при мер", то скрипт не работает :(
    Подскажите пожалуйста, почему так происходит?
     
  2. Ti

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

    С нами с:
    3 июл 2006
    Сообщения:
    2.378
    Симпатии:
    1
    Адрес:
    d1.ru, Екатеринбург
    понял ничего
     
  3. armadillo

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

    С нами с:
    6 апр 2007
    Сообщения:
    2.380
    Симпатии:
    0
    Адрес:
    Russia, Moscow
    - разделите функции на разные блоки скрипта для отладки
    - экранируйте внутри двойных кавычек, а не одинарных.
    - очевидно, так передаете в функцию.
     
  4. neuro

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

    С нами с:
    23 янв 2007
    Сообщения:
    66
    Симпатии:
    0
    передаю так
    Код (Text):
    1. content=\'<a onclick=setvalue("при мер")>\'+пример+\'</a>\';
     
  5. neuro

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

    С нами с:
    23 янв 2007
    Сообщения:
    66
    Симпатии:
    0
    экранирование не влияет на работу скрипта - перебросил все под htm, там таже картина
    если передаю setvalue("пример") то все работает
    если setvalue("прим ер") то не работает
     
  6. armadillo

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

    С нами с:
    6 апр 2007
    Сообщения:
    2.380
    Симпатии:
    0
    Адрес:
    Russia, Moscow
    я бы делал
    1)
    setvalue(getElementById('box4value").value)
    2) скрывал/показывал разные варианты, а не добавлял в innerHTML элементы, тем более активные.

    Разберитесь с кавычками, слешами, плюсами и вообще работой со строками.
     
  7. eduha

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

    С нами с:
    8 ноя 2006
    Сообщения:
    278
    Симпатии:
    0
    Адрес:
    Караганда
    content=\'<a onclick=\\\'setvalue("при мер")\\\'>\'+пример+\'</a>\';

    или так:

    content=\'<a onclick=setvalue("при&#32;мер")>\'+пример+\'</a>\';
     
  8. neuro

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

    С нами с:
    23 янв 2007
    Сообщения:
    66
    Симпатии:
    0
    поставлю вопрос иначе:
    пробую такой код

    Код (Text):
    1.  
    2. <script type="text/javascript" language="JavaScript">
    3.  
    4. function setvalue(vl)
    5. {
    6.   document.getElementById("t").value=vl;
    7. }
    8. </script>
    9.  
    10. <input type="text" name="t"></p>
    11. <a onclick=setvalue('пример')>жми тут</a>
    так работает

    а вот так нет
    Код (Text):
    1. <script type="text/javascript" language="JavaScript">
    2.  
    3. function setvalue(vl)
    4. {
    5.   document.getElementById("t").value=vl;
    6. }
    7. </script>
    8.  
    9. <input type="text" name="t"></p>
    10. <a onclick=setvalue('при мер')>жми тут</a>
    почему-то при добавлении пробела в слово при мер скрипт перестает работать
     
  9. armadillo

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

    С нами с:
    6 апр 2007
    Сообщения:
    2.380
    Симпатии:
    0
    Адрес:
    Russia, Moscow
    Существует не только ИЕ.

    <a="#" onclick=
    у меня работает.

    У любого метода и объекта есть синтаксис. Если его не придерживаться, то не будет работать завтра, даже если вам кажется, что работает сейчас.

    (сегодня я на людей бросаюсь)
     
  10. neuro

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

    С нами с:
    23 янв 2007
    Сообщения:
    66
    Симпатии:
    0
    страничка делается для локальной сети под конкретный браузер IE
    мне нужно сделать, чтобы это работало, а с помощью какого объекта это будет сделано, мне все равно.
    если есть другие варинты, то приведите пожалуйста на них ссылки.
    задача-то тривиальная, на любом языке программирования (кроме JavaScript) реализуется очень просто.
    еще раз прошу подсказать, как вот этот код заставить работать

    Код (Text):
    1. <script type="text/javascript" language="JavaScript">
    2. function setvalue(vl)
    3. {
    4.   document.getElementById("t").value=vl;
    5. }
    6. </script>
    7.  
    8. <input type="text" name="t" id="t"></p>
    9. <a onclick=setvalue('при мер')>жми тут</a>
    добавил id="t", на работоспособность скрипта это не повлияло
     
  11. armadillo

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

    С нами с:
    6 апр 2007
    Сообщения:
    2.380
    Симпатии:
    0
    Адрес:
    Russia, Moscow
    не стоит тут делать заявления про "конкретный браузер".
    Я написал в чем причина и как работает.
     
  12. neuro

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

    С нами с:
    23 янв 2007
    Сообщения:
    66
    Симпатии:
    0
    никаких заявлений я тут не делал,
    ва сказали
    а я объяснил почему существование других браузеров в это примере меня не интересует

    подскажите что сделал не так
    добавил a="#"
    <a="#" onclick=setvalue("при мер")>жми тут</a>
    браузер IE ругаться на скрипт перестал, но и сам скрипт работать не начал, текст не добавляется
     
  13. Vitas

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

    С нами с:
    7 фев 2006
    Сообщения:
    595
    Симпатии:
    0
    Адрес:
    Новосибирск, Академгородок
    Ё-моё, народ, надо просто onclick в кавычки заключить и все...
    Код (Text):
    1. <a="#" onclick="setvalue('при мер')">жми тут</a>
     
  14. neuro

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

    С нами с:
    23 янв 2007
    Сообщения:
    66
    Симпатии:
    0
    вот как все просто :D пасибо огромное :D