Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
|

12.03.2010, 21:47
|
|
Постоянный
Регистрация: 30.08.2007
Сообщений: 773
Провел на форуме: 3069349
Репутация:
808
|
|
Сообщение от оlbaneс
да через алерт работает, но у меня другой случай - ввод данных в форму и вывод через document
вот сам скрипт без хтмл
Код:
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 ;
}
а что оно выводит я писал выше. какая-то безумная магия. 
x - это строка. Соответственно при (x += 1) происходит не сложение, а конкатенация и получается "11" вместо 2 и т. п. При сравнении (i < x) оба аргумента преобразуется к числовому типу (этого не происходит только если с обеих сторон - строки). Далее всё достаточно очевидно.
Кстати, это называется арифметическая прогрессия и её сумма считается без циклов.
|
|
|

12.03.2010, 21:57
|
|
Moderator - Level 7
Регистрация: 05.11.2007
Сообщений: 894
Провел на форуме: 5609275
Репутация:
1474
|
|
Паш, безумный ад. я пробовал и так. и даже думал что она их соединяет и писал так a=a+i*1
а твой код заработал. выяснил методом тыка , что все дело в выражени for (var i=0; i<x; i++) i<x -вот так пишет всякую херню, а вот так работает нормально i<=x .
все дело в знаке =. 0_0.
2 астрологер. пока метод тыка осваивал ты ответ написал. в том то и дело не происходила конкатенация. если вводил 1 полчал 55 если 4 получал 820. даже не представляю как она считала.
Последний раз редактировалось оlbaneс; 12.03.2010 в 22:01..
|
|
|

12.03.2010, 22:10
|
|
Постоянный
Регистрация: 30.08.2007
Сообщений: 773
Провел на форуме: 3069349
Репутация:
808
|
|
Сообщение от оlbaneс
в том то и дело не происходила конкатенация
Как будто у неё выбор есть. Достаточно проверить тип и значение x и всё станет ясно:
Код:
<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>
если вводил 1 полчал 55 если 4 получал 820. даже не представляю как она считала.
Так и считала, для "11" и "41" соответственно.
|
|
|

13.03.2010, 16:47
|
|
Участник форума
Регистрация: 27.12.2009
Сообщений: 126
Провел на форуме: 1170081
Репутация:
63
|
|
Не могу сделать транслит вот код и 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>
что не так сделал?
Последний раз редактировалось Tesson; 13.03.2010 в 17:41..
|
|
|

13.03.2010, 17:09
|
|
Динозавр
Регистрация: 10.01.2008
Сообщений: 2,841
Провел на форуме: 9220514
Репутация:
3338
|
|
Код:
<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>
|
|
|

13.03.2010, 17:18
|
|
Участник форума
Регистрация: 27.12.2009
Сообщений: 126
Провел на форуме: 1170081
Репутация:
63
|
|
Pashkela, надо через checkbox и через мой tesson.tk/translit.js 
Последний раз редактировалось Tesson; 13.03.2010 в 17:23..
|
|
|

13.03.2010, 18:51
|
|
Динозавр
Регистрация: 10.01.2008
Сообщений: 2,841
Провел на форуме: 9220514
Репутация:
3338
|
|
у тебя функция есть, модифицируй её как хочешь, готовый код за тебя никто писать не будет
|
|
|

13.03.2010, 19:23
|
|
Участник форума
Регистрация: 27.12.2009
Сообщений: 126
Провел на форуме: 1170081
Репутация:
63
|
|
Сообщение от Pashkela
у тебя функция есть, модифицируй её как хочешь, готовый код за тебя никто писать не будет
помогут другие если не ты 
|
|
|

13.03.2010, 23:09
|
|
Постоянный
Регистрация: 08.11.2008
Сообщений: 498
Провел на форуме: 2603363
Репутация:
278
|
|
Сообщение от Tesson
помогут другие если не ты 
:LOL:
|
|
|

14.03.2010, 03:19
|
|
Новичок
Регистрация: 08.03.2010
Сообщений: 3
Провел на форуме: 3912
Репутация:
0
|
|
Сообщение от Tesson
Pashkela, надо через checkbox и через мой tesson.tk/translit.js 
Зачем?О_о Ведь он достаточно громоздкий, а Pashkela предложил более простой и производительный вариант. Или в твоем скрипте есть какой-то особенный функционал, без которого не обойтись?
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|