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

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

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

    Pashkela Динозавр

    Joined:
    10 Jan 2008
    Messages:
    2,750
    Likes Received:
    1,044
    Reputations:
    339
    дык тоже самое:

    <script>
    var sum = 0;
    for (var i=1;i<=36;i++)
    sum = sum+i;
    alert(sum);
    </script>
     
  2. оlbaneс

    оlbaneс Moderator

    Joined:
    5 Nov 2007
    Messages:
    1,376
    Likes Received:
    1,094
    Reputations:
    356
    да через алерт работает, но у меня другой случай - ввод данных в форму и вывод через document
    вот сам скрипт без хтмл
    Code:
    	function two()
    	{
    	 var a=0;
    	 	 x = document.forms[0].elements['x'].value;
    		  x+=1;
    		for (var i=0; i<x; i++){ a+=i;}
         document.getElementById('qqq').innerHTML = 'Результат ='+a   ;
    	}
    а что оно выводит я писал выше. какая-то безумная магия. :(
     
    _________________________
  3. Pashkela

    Pashkela Динозавр

    Joined:
    10 Jan 2008
    Messages:
    2,750
    Likes Received:
    1,044
    Reputations:
    339
    ну дык замени a+=i; на a = a+i;

    ну просто вот такой код:
    Code:
    function two()	{
      var a=0;
      x = document.forms[0].elements['x'].value;
      for (var i=1; i<=x; i++) 
          a = a+i;
      document.getElementById('qqq').innerHTML = 'Результат ='+a;
    }
    
    если клиент дебил и вставит 0 или 1 - можно в скрипт проверку и на это засунуть.
     
    #2163 Pashkela, 12 Mar 2010
    Last edited: 12 Mar 2010
  4. astrologer

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

    Joined:
    30 Aug 2007
    Messages:
    837
    Likes Received:
    267
    Reputations:
    59
    x - это строка. Соответственно при (x += 1) происходит не сложение, а конкатенация и получается "11" вместо 2 и т. п. При сравнении (i < x) оба аргумента преобразуется к числовому типу (этого не происходит только если с обеих сторон - строки). Далее всё достаточно очевидно.

    Кстати, это называется арифметическая прогрессия и её сумма считается без циклов.
     
  5. оlbaneс

    оlbaneс Moderator

    Joined:
    5 Nov 2007
    Messages:
    1,376
    Likes Received:
    1,094
    Reputations:
    356
    Паш, безумный ад. я пробовал и так. и даже думал что она их соединяет и писал так a=a+i*1
    а твой код заработал. выяснил методом тыка , что все дело в выражени for (var i=0; i<x; i++) i<x -вот так пишет всякую херню, а вот так работает нормально i<=x .
    все дело в знаке =. 0_0.


    2 астрологер. пока метод тыка осваивал ты ответ написал. в том то и дело не происходила конкатенация. если вводил 1 полчал 55 если 4 получал 820. даже не представляю как она считала.
     
    _________________________
    #2165 оlbaneс, 12 Mar 2010
    Last edited: 12 Mar 2010
  6. astrologer

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

    Joined:
    30 Aug 2007
    Messages:
    837
    Likes Received:
    267
    Reputations:
    59
    Как будто у неё выбор есть. Достаточно проверить тип и значение x и всё станет ясно:
    Code:
    <script>
    
    function fn()
    {
      var a = 0;
      var x = document.forms[0].elements['x'].value;
      x += 1;
    
      alert('x: ' + typeof x + ': ' + x);
      for (var i = 0; i < x; i++){ a+=i; }
      alert('i: ' + i);
    
      document.getElementById('qqq').innerHTML = 'Результат ='+a   ;
    }
    
    </script>
    <form>
      <input name="x" id="x" onchange="fn()">
    </form>
    <pre id="qqq"></pre>
    Так и считала, для "11" и "41" соответственно.
     
    1 person likes this.
  7. Tesson

    Tesson Banned

    Joined:
    27 Dec 2009
    Messages:
    164
    Likes Received:
    43
    Reputations:
    0
    Не могу сделать транслит вот код и http://tesson.tk/translit.js
    PHP:
    <html>
    <
    head>
    <
    title>Транслит</title>
    <
    script type='text/javascript' src='http://tesson.tk/translit.js'></script>
    </head>
    <body>

    Транслит:<input type="checkbox" name="transl" id="transl">
    <input type="text" id="text" onkeypress="if($('#transl').attr('checked')) translate_letter(event, this, rules=1);">

    </body>
    </html>
    что не так сделал?
     
    #2167 Tesson, 13 Mar 2010
    Last edited: 13 Mar 2010
  8. Pashkela

    Pashkela Динозавр

    Joined:
    10 Jan 2008
    Messages:
    2,750
    Likes Received:
    1,044
    Reputations:
    339
    Code:
    <script>
    var rusChars = new Array('а','б','в','г','д','е','ё','ж','з','и','й',  'к','л','м','н','о','п','р','с','т','у','ф','х','ч  ','ц','ш','щ','э','ю','\я','ы','ъ','ь', ' ', '\'', '\"', '\#', '\$', '\%', '\&', '\*', '\,', '\:', '\;', '\<', '\>', '\?', '\[', '\]', '\^', '\{', '\}', '\|', '\!', '\@', '\(', '\)', '\-', '\=', '\+', '\/', '\\');
    var transChars = new Array('a','b','v','g','d','e','jo','zh','z','i','j  ','k','l','m','n','o','p','r','s','t','u','f','h',  'ch','c','sh','csh','e','ju','ja','y','', '', ' ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '');
    var from = "";
    
    function convert2EN()
      {
      from = document.getElementById("Message").value;
      from = from.toLowerCase();
      var to = "";
      var len = from.length;
      var character, isRus;
      for(var i=0; i < len; i++)
        {
        character = from.charAt(i,1);
        isRus = false;
        for(var j=0; j < rusChars.length; j++)
          {
          if(character == rusChars[j])
            {
            isRus = true;
            break;
            }
          }
        to += (isRus) ? transChars[j] : character;
        }
       document.form1.Message.value = to; 
      }
    </script>
    
    <FORM NAME="form1">
    <textarea name="Message" id="Message" cols="30" rows="5" class="text"></textarea><br> 
    <input type="button" value="Транслит" onclick="convert2EN()">
    </FORM>
    
     
  9. Tesson

    Tesson Banned

    Joined:
    27 Dec 2009
    Messages:
    164
    Likes Received:
    43
    Reputations:
    0
    Pashkela, надо через checkbox и через мой tesson.tk/translit.js :rolleyes:
     
    #2169 Tesson, 13 Mar 2010
    Last edited: 13 Mar 2010
  10. Pashkela

    Pashkela Динозавр

    Joined:
    10 Jan 2008
    Messages:
    2,750
    Likes Received:
    1,044
    Reputations:
    339
    у тебя функция есть, модифицируй её как хочешь, готовый код за тебя никто писать не будет
     
  11. Tesson

    Tesson Banned

    Joined:
    27 Dec 2009
    Messages:
    164
    Likes Received:
    43
    Reputations:
    0
    помогут другие если не ты :eek:
     
  12. Deathdreams

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

    Joined:
    8 Nov 2008
    Messages:
    342
    Likes Received:
    116
    Reputations:
    5
    :LOL:
     
  13. GhOsT_MZ

    GhOsT_MZ New Member

    Joined:
    8 Mar 2010
    Messages:
    3
    Likes Received:
    0
    Reputations:
    0
    Зачем?О_о Ведь он достаточно громоздкий, а Pashkela предложил более простой и производительный вариант. Или в твоем скрипте есть какой-то особенный функционал, без которого не обойтись?
     
  14. оlbaneс

    оlbaneс Moderator

    Joined:
    5 Nov 2007
    Messages:
    1,376
    Likes Received:
    1,094
    Reputations:
    356
    чет никак нагуглить не могу.
    как в ячейки таблицы (вместо знака пробела)вставить данные скрипта? в данном случае скрипт заполняет таблицу умножения
    //алерт не предлагать :)
    Code:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
      <meta http-equiv="content-type" content="text/html; charset=windows-1251">
      <meta name="generator" content="PSPad editor, www.pspad.com">
      <title></title>
      <style>
      table  {border:darkred solid 1px;}
      td     { text-align:center;width:40px;background-color:lightgrey;border:darkred solid 1px; }
      td.one {font-weight:bold; background-color: grey;  }
      </style>
               <script>
               var c,j=1;
               for (var i=1;i<10;i++) {c=i*j;j++;}
       //как вывести значения в таблицу?
               </script>
      </head>
      <body>
    
                          <h2 align="center"><b>  table</b></h3>
      <table align="center" cellpadding="5" border="1" cellspacing="0">
      <tbody><tr>
        <td class="one">&nbsp;</td>
        <td class="one">1</td>
        <td class="one">2</td>
        <td class="one">3</td>
        <td class="one">4</td>
        <td class="one">5</td>
        <td class="one">6</td>
        <td class="one">7</td>
        <td class="one">8</td>
        <td class="one">9</td>
        <td class="one">10</td>
      </tr>
    
      <td class="one">1</td>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
             </tr>
             
             <tr>
      <td class="one">2</td>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
             </tr>
    
    
      </tbody></table>
      </body>
    </html>
     
    _________________________
  15. Omegа

    Omegа Member

    Joined:
    16 Dec 2009
    Messages:
    27
    Likes Received:
    11
    Reputations:
    5
    Каждой ячейке присваиваешь свой id, вставлять примерно так:
    Code:
    document.getElementById('id').innerHTML = i*j;
     
  16. lotec777

    lotec777 New Member

    Joined:
    17 Jan 2010
    Messages:
    3
    Likes Received:
    0
    Reputations:
    0
    Знаю что есть простые ошибки но немогу найти(( если не тяжело укажите
    <form name=forma1> <table width="152" height="161" border="1">
    <tr> <td valign="top"><p class="стиль1">Количество ядер :
    <input type="text" name="textfield" /> </p> <p class="стиль1">Тип ядер:
    <select name="select">
    <option value="1">Обычные</option>
    <option value="2">Элитные</option>
    <option value="3">Шрапнельные</option>
    </select> </p> <p class="стиль1">Урон +5%:
    <input type="checkbox" name="checkbox2" value="checkbox" /> </p>
    <input type="button" value="OK" onClick="obsh(forma1);"> <p class="стиль1">Можно нанести урона: <label>
    <input type="text" name="textfield2"> </label> </p></td> </tr> </table> </form>
    <script language="javascript">
    function Obsh(obj) {
    var a=obj.forma1.textfield.value;
    var x;
    if (obj.forma1.elements[2] [1].selected)
    x=a*20*0.80;
    if (obj.forma1.elements[2] [2].selected)
    x=a*75*0.80;
    if (obj.forma1.elements[2] [3].selected)
    x=a*85*0.80;
    if (obj.forma1.elements[3].checked)
    x=x*1.05;
    obj.forma1.textfield2.value="x";
    }
    </script>
    ПС: пишу только 1 день
     
  17. оlbaneс

    оlbaneс Moderator

    Joined:
    5 Nov 2007
    Messages:
    1,376
    Likes Received:
    1,094
    Reputations:
    356
    это-то понятно. я хз как передать значение i
    document.getElementById(i).innerHTML = i*j;
    в
    td><p id="1">&nbsp;</p></td>
    <td><p id="2">&nbsp;</p></td>
     
    _________________________
  18. BrainDeaD

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

    Joined:
    9 Jun 2005
    Messages:
    774
    Likes Received:
    292
    Reputations:
    214
    в цикле например.
     
  19. оlbaneс

    оlbaneс Moderator

    Joined:
    5 Nov 2007
    Messages:
    1,376
    Likes Received:
    1,094
    Reputations:
    356
    да понимаю что в цикле. синтаксис не знаю и не могу найти.
    вот весь код (таблицу целиком не стал выкладывать)
    Code:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
      <meta http-equiv="content-type" content="text/html; charset=windows-1251">
      <meta name="generator" content="PSPad editor, www.pspad.com">
      <title></title>
      <style>
      table  {border:darkred solid 1px;}
      td     { text-align:center;width:40px;background-color:lightgrey;border:darkred solid 1px; }
      td.one {font-weight:bold; background-color: grey;  }
      </style>
               <script>
                 for (var i=1;i<11;i++) {
                      for (var j=1;j<11;j++){
                            document.getElementById(i).innerHTML = i*j; //вот эту строчку
                           }
       //как вывести значения в таблицу?
               </script>
      </head>
      <body>
    
                          <h2 align="center"><b>Multiplication table</b></h3>
      <table align="center" cellpadding="5" border="1" cellspacing="0">
      <tbody><tr>
        <td class="one">&nbsp;</td>
        <td class="one">1</td>
        <td class="one">2</td>
        <td class="one">3</td>
        <td class="one">4</td>
        <td class="one">5</td>
        <td class="one">6</td>
        <td class="one">7</td>
        <td class="one">8</td>
        <td class="one">9</td>
        <td class="one">10</td>
      </tr>
    
      <td class="one">1</td>
        <td><p id="1">&nbsp;</p></td>
        <td><p id="2">&nbsp;</p></td>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
             </tr>
             
             <tr>
      <td class="one">2</td>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
             </tr>
    
    
      </tbody></table>
      </body>
    </html>
    
     
    _________________________
  20. Pashkela

    Pashkela Динозавр

    Joined:
    10 Jan 2008
    Messages:
    2,750
    Likes Received:
    1,044
    Reputations:
    339
    во:

    Code:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
      <meta http-equiv="content-type" content="text/html; charset=windows-1251">
      <meta name="generator" content="PSPad editor, www.pspad.com">
      <title></title>
      <style>
      table  {border:darkred solid 1px;}
      td     { text-align:center;width:40px;background-color:lightgrey;border:darkred solid 1px; }
      td.one {font-weight:bold; background-color: grey;  }
      </style>
     </head>
    <body>
    <h2 align="center"><b>  table</b></h3>
    <table align="center" cellpadding="5" border="1" cellspacing="0">
    <tr>
    <script>
      document.write("<td class='one'></td>");
      for (var s=1; s<=10; s++) 
             document.write("<td class='one'>"+s+"</td>");
      document.write("<tr>");
      for (var i=1; i<=10; i++) {
          document.write("<td class='one'>"+i+"</td>");
          for (var j=1; j<=10; j++)
            document.write("<td>"+String(i*j)+"</td>");
          document.write("</tr>");
      }
    </script>
    </table>
     </body>
    </html>
    
     
    #2180 Pashkela, 15 Mar 2010
    Last edited: 15 Mar 2010
    2 people like this.
Thread Status:
Not open for further replies.