[JavaScript, AJAX] Задай вопрос, получи ответ

Discussion in 'PHP' started by banned, 9 Jun 2007.

Thread Status:
Not open for further replies.
  1. d_x

    d_x Banned

    Joined:
    25 Mar 2008
    Messages:
    558
    Likes Received:
    650
    Reputations:
    210
    Code:
    <html>
    <head>
    <script language='JavaScript'>
    var words=new Array("Слово 1","Слово 2","Слово 3");
    
    var curr=0;
    
    
    
    function print_word()
    {
      if(words[curr])
      {
        document.getElementById("words").innerHTML=document.getElementById("words").innerHTML+"<br>"+words[curr];
        curr++;
        setTimeout("print_word()",1000);
      }
    }
    
    </script>
    </head>
    <body onload="print_word()">
    <center><span id="words"></span></center>
    </body></html>
     
  2. Dimi4

    Dimi4 Чайный пакетик

    Joined:
    19 Mar 2007
    Messages:
    750
    Likes Received:
    1,046
    Reputations:
    291
    Как квнедрить джаваскрипт в браузер? Тоесть чтобы он исполнялся, каждый раз, как юзер откроет браузер. (Для осла)
     
  3. astrologer

    astrologer Elder - Старейшина

    Joined:
    30 Aug 2007
    Messages:
    837
    Likes Received:
    267
    Reputations:
    59
    Вот так и не будет бесконечного интервала:
    Code:
    <div id="dummy"></div>
    
    <script>
    
    var words = ['слово раз', 'слово два', 'слово три'];
    
    var timer = setInterval(function()
    {
      var node, word;
      if((node = document.getElementById('dummy')) && (word = words.shift()))
      {
        node.innerHTML += word + '<br />';
      }
      else clearInterval(timer);
    }, 1000);
    
    </script>
    
    d_x, вместо такого:
    Code:
    setTimeout("print_word()",1000);
    лучше и проще писать так:
    Code:
    setTimeout(print_word, 1000);
    Потому, что в первом случае код исполняется методом, близким к eval(), а во втором - сразу передаётся ссылка на функцию.

    Dimi4 Как userJS в опере? Тогда Trixie
     
  4. d_x

    d_x Banned

    Joined:
    25 Mar 2008
    Messages:
    558
    Likes Received:
    650
    Reputations:
    210
    astrologer, в первом-то варианте скрипта не было строчки
    else clearInterval(timer);
    И надо бы это запускать при событии onload, потому что при медленном соединении браузер может начать исполнять код, когда вся страница ещё не догрузилась (в частности, объект dummy) и
    document.getElementById('dummy') не вернёт ничего, то есть слова не будут выведены (встречал такое в IE).
     
  5. astrologer

    astrologer Elder - Старейшина

    Joined:
    30 Aug 2007
    Messages:
    837
    Likes Received:
    267
    Reputations:
    59
    ОМГ, конечно, или я стал бы постить ещё раз тот же самый код?
    В данном примере этого не случится. Более того, чем медленнее соединение - тем лучше.
     
  6. Architek86

    Architek86 Elder - Старейшина

    Joined:
    20 Feb 2008
    Messages:
    80
    Likes Received:
    1
    Reputations:
    0
    Ламерский вопрос, но всё же..
    Нужен javascript, который в зависимсоти от браузера подключал нужный файл стилей - если Опера, то opera.css, если любой другой, то all.css...
    помогите ламерчегу :)
     
  7. d_x

    d_x Banned

    Joined:
    25 Mar 2008
    Messages:
    558
    Likes Received:
    650
    Reputations:
    210
    Code:
    <head>
    <script language='JavaScript'>
    var uagent=navigator.userAgent.toLowerCase();
    var is_opera=(uagent.indexOf('opera')!=-1);
    if(is_opera)
      document.write("<link rel='stylesheet' href='стиль_оперы.css' type='text/css'>");
    else
      document.write("<link rel='stylesheet' href='стиль_всех.css' type='text/css'>");
    </script></head><body>тело документа...</body>
    А можно в css использовать конструкции, которые только опера понимает, например,
    background-image/**/: ....
    то есть после имени параметра ставить /**/
     
  8. smOleg

    smOleg Banned

    Joined:
    30 Nov 2007
    Messages:
    69
    Likes Received:
    25
    Reputations:
    -5
    на пхп
    _http://xpoint.ru/forums/internet/html_css/compatibility/thread/40332.xhtml

    это уже хак. Наверно человеку это ненадо раз так вопрос поставил
     
    #428 smOleg, 4 Apr 2008
    Last edited: 4 Apr 2008
  9. Architek86

    Architek86 Elder - Старейшина

    Joined:
    20 Feb 2008
    Messages:
    80
    Likes Received:
    1
    Reputations:
    0
    Хм.. полезно, но не годится - у меня сайт на юкозе, а там пхп нет :)
     
  10. De-visible

    De-visible [NDC] Network develope c0ders

    Joined:
    6 Jan 2008
    Messages:
    916
    Likes Received:
    550
    Reputations:
    66
    _http://maxq.ru/blog/opredelenie-brauzera-na-javascript/
    Пригодится!
     
  11. banned

    banned Banned

    Joined:
    20 Nov 2006
    Messages:
    3,324
    Likes Received:
    1,193
    Reputations:
    252
    Нужен следующий js скрипт:
    Сделать так чтобы пользователь мог вводить в форму только БОЛЬШИЕ латинские буквы и цифры

    Воть)
     
  12. ZET36

    ZET36 Elder - Старейшина

    Joined:
    8 Oct 2007
    Messages:
    250
    Likes Received:
    49
    Reputations:
    0
    держи

    Code:
    <form name="f">
    <input type="text" name="n" onKeyUp="zet()">
    </form>
    
    <script>
    function zet()
    {
    var lowerText=document.f.n.value;
    document.f.n.value=lowerText.toUpperCase();
    }
    </script>
    
     
    #432 ZET36, 7 Apr 2008
    Last edited: 7 Apr 2008
  13. banned

    banned Banned

    Joined:
    20 Nov 2006
    Messages:
    3,324
    Likes Received:
    1,193
    Reputations:
    252
    Спасибо, но не вижу проверку на латиницу..
    Русские символы не нужны...
    И можно ли сделать так чтобы если поставил русскую букву, то она автоматом сменилась на английскуй на той же раскладке?
    Т.е. ввели букву "щ", она поменялась на "o" латинскую
     
  14. ZET36

    ZET36 Elder - Старейшина

    Joined:
    8 Oct 2007
    Messages:
    250
    Likes Received:
    49
    Reputations:
    0
    сори неувидел. встроенную функцию для такой замены я что то ненашол. можно написать самому вот пример

    Code:
    <form name="f">
    <input type="text" name="n" onKeyUp="zet()">
    </form>
    
    <script>
    function zet()
    {
    var lowerText=document.f.n.value;
    lowerText=lowerText.replace(/[COLOR=Blue]й[/COLOR]/g, "[COLOR=Red]q[/COLOR]"); // замена "р"  на "r" 
    lowerText=lowerText.toUpperCase(); // все буквы в строке заглавные
    document.f.n.value=lowerText;
    }
    </script>
    
    в лом переписывать весь алфавит я просто привёл пример замены одной бувы
     
    #434 ZET36, 7 Apr 2008
    Last edited: 7 Apr 2008
  15. banned

    banned Banned

    Joined:
    20 Nov 2006
    Messages:
    3,324
    Likes Received:
    1,193
    Reputations:
    252
    Огромное спасибо..все работает
     
  16. ZET36

    ZET36 Elder - Старейшина

    Joined:
    8 Oct 2007
    Messages:
    250
    Likes Received:
    49
    Reputations:
    0
    Isis

    блин немножко правда ошибся сначало нужно было поставиьть возведение в заглавные а патом замена букв. что бы непрописывать замену например й и Й отдельно. тут сразу строка преобразует в зглавную а потом заменяет её

    Code:
    <form name="f">
    <input type="text" name="n" onKeyUp="zet()">
    </form>
    
    <script>
    function zet()
    {
    var lowerText=document.f.n.value;
    lowerText=lowerText.toUpperCase(); // все буквы в строке заглавные
    lowerText=lowerText.replace(/В/g, "V"); // замена "В"  на "V" 
    document.f.n.value=lowerText;
    }
    </script>
    
     
  17. astrologer

    astrologer Elder - Старейшина

    Joined:
    30 Aug 2007
    Messages:
    837
    Likes Received:
    267
    Reputations:
    59
    Мой вариант %)
    Code:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <title>Пример.</title>
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
    
    <style type="text/css">
    
    input.err,
    textarea.err
    {
      border: red dashed 2px;
    }
    
    input, textarea
    {
      font-family: "Courier New";
      margin-bottom: 10px;
    }
    
    pre
    {
      margin: 0;
    }
    
    </style>
    
    
    <script type="text/javascript">
    
    var Forms = 
    {
      onsubmit: function(e)
      {
        if(!e) e = window.event;
        var node = e.target || e.srcElement;
    
        if(!Forms.validate(node))
        {
          e.returnValue = false;
          if(e.preventDefault)  e.preventDefault();
        }
      },
    
      onkeypress: function(e)
      {
        if(!e) e = window.event;
        var node = e.target || e.srcElement,
        key = e.charCode || e.keyCode,
        exp = node.getAttribute('regex'),
        str = String.fromCharCode(key);
    
        if(!(key < 32 || e.ctrlKey || e.altKey) && !Forms.test(str, exp))
        {
          Forms.notify(node);
          e.returnValue = false;
          if(e.preventDefault)  e.preventDefault();
        }
      },
    
      validate: function(node)
      {
        var valid = true;
        for(i = 0;i<node.length;i++)
        {
           if(!Forms.check(node[i]))
           {
             Forms.notify(node[i]);
             valid = false;
           }
        }
        return valid;
      },
    
      check: function(node)
      {
        var r;
        if((r = node.getAttribute('regex')) == undefined) return true;
        return (Forms.test(node.value, r) ? true : (Forms.notify(node), false));
      },
    
      test: function(str, exp)
      {
        return (new RegExp(exp)).test(str);
      },
    
      notify: function(node)
      {
        var c = node.className;
        if(c != 'err')
        {
          node.className = 'err';
          setTimeout(function()
          {
            node.className = c;
          }, 1500);
        }
      },
    
      init: function()
      {
        var f = document.forms, i = f.length;
        while(i--)
        {
          addEvent(f[i], 'submit',   Forms.onsubmit);
          addEvent(f[i], 'keypress', Forms.onkeypress);
        }
      }
    };
    
    function addEvent(o, e, f)
    {
      if(o.addEventListener)
      {
        o.addEventListener(e, f, false);
      }
      else if(o.attachEvent)
      {
        var on = 'on' + e;
        o.attachEvent(on, f)
      }
    };
    
    addEvent(window, 'load', Forms.init);
    
    </script>
    
    </head>
    <body>
    
    <div>
      <form action="javascript:alert('#1')">
        <pre>[A-Z0-9]+</pre>
        <input name="uan" type="text" regex="[A-Z0-9]+" value="">
    
        <pre>[0-9]+</pre>
        <input name="an" type="text" regex="[0-9]+" value=""><br>
        <input name="run" type="submit" value="Отправить">
      </form>
    </div>
    
    <div>
      <form action="javascript:alert('#2')">
        <pre>[A-Z0-9]+</pre>
        <input name="uan" type="text" regex="[A-Z0-9]+" value="">
    
        <pre>[a-zA-Z0-9]+</pre>
        <input name="an" type="text" regex="[a-zA-Z0-9]+" value="">
    
        <pre>[a-z]+</pre>
        <input name="a" type="text" regex="[a-z]+" value="">
    
        <pre>^[\w\ ]*$</pre>
        <textarea name="txt" regex="^[\w\ ]*$" cols="20" rows="5"></textarea><br>
        <input name="run" type="submit" value="Отправить">
      </form>
    </div>
    
    </body>
    </html>
     
  18. banned

    banned Banned

    Joined:
    20 Nov 2006
    Messages:
    3,324
    Likes Received:
    1,193
    Reputations:
    252
    Хм..что за параметр regex в хтмл коде?
    В гугле не нашел, в скрипте не вижу
     
  19. astrologer

    astrologer Elder - Старейшина

    Joined:
    30 Aug 2007
    Messages:
    837
    Likes Received:
    267
    Reputations:
    59
    Просто контейнер для выражения. В скрипте:
    Code:
    getAttribute('regex')
     
  20. Rogun

    Rogun Elder - Старейшина

    Joined:
    12 Feb 2008
    Messages:
    76
    Likes Received:
    4
    Reputations:
    0
    Сорри за такой вопрос вопрос, но как юзать Java скрипт?
    Я скачал там и у меня как обычный тестовый фаил только в формате Java
    Надо ещё программы для чтения ява скриптов устанавливать или как?
     
Thread Status:
Not open for further replies.