Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Проблема с кодом
 
 автор: verg   (25.01.2010 в 00:12)   письмо автору
 
 

Внизу размещен код, я его собраз из 2 javascript, и он стал не раочим, проблема в коде выделена жирным, как можно изменить этот код, чтоб всё работало нормально?

<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<title>Translit</title>
<script type="text/javascript">
/* Javascript functions */
function JSfunc()
{
    /* Making transliteration! */
    this.strTranslit = function(el)
    {
        new_el = document.getElementById('out');
        A = new Array();
        A["Ё"]="YO";A["Й"]="I";A["Ц"]="TS";A["У"]="U";A["К"]="K";A["Е"]="E";A["Н"]="N";A["Г"]="G";A["Ш"]="SH";A["Щ"]="SCH";A["З"]="Z";A["Х"]="H";A["Ъ"]="'";
        A["ё"]="yo";A["й"]="i";A["ц"]="ts";A["у"]="u";A["к"]="k";A["е"]="e";A["н"]="n";A["г"]="g";A["ш"]="sh";A["щ"]="sch";A["з"]="z";A["х"]="h";A["ъ"]="'";
        A["Ф"]="F";A["Ы"]="I";A["В"]="V";A["А"]="A";A["П"]="P";A["Р"]="R";A["О"]="O";A["Л"]="L";A["Д"]="D";A["Ж"]="ZH";A["Э"]="E";
        A["ф"]="f";A["ы"]="i";A["в"]="v";A["а"]="a";A["п"]="p";A["р"]="r";A["о"]="o";A["л"]="l";A["д"]="d";A["ж"]="zh";A["э"]="e";
        A["Я"]="YA";A["Ч"]="CH";A["С"]="S";A["М"]="M";A["И"]="I";A["Т"]="T";A["Ь"]="'";A["Б"]="B";A["Ю"]="YU";
        A["я"]="ya";A["ч"]="ch";A["с"]="s";A["м"]="m";A["и"]="i";A["т"]="t";A["ь"]="'";A["б"]="b";A["ю"]="yu";
        new_el.value = el.value.replace(/([\u0410-\u0451])/g,
            function (str,p1,offset,s) {
                if (A[str] != 'undefined'){return A[str];}
            }
        );
    }
    /* Normalizes a string, eю => eyu */
    this.strNormalize = function(el)
    {
        if (!el) { return; }
        this.strTranslit(el);
    }
}
var oJS = new JSfunc();
</script>
</head>
<body>
<form name="form" onsubmit="return false" action="javascript:void()">
<p>введите текст:</p>
<table width="100%" border="0" cellpadding="10">
  <tr>
    <td width="36%"><textarea  onkeypress="count()"  onKeyup="count()" name="textarea" id="in" style="height:10em;width:400px" onKeyup="oJS.strNormalize(this)"></textarea></td>
    <td width="64%" valign="top"><br>Сообщений: <input style="border:0px; background-color:#FFFFFF; color:#FF0000; font-size:24px; font-weight:bold;"  disabled="disabled" name="sms" size="4"> 
<br>Символов: <input style="border:0px; background-color:#FFFFFF; color:#FF0000; font-size:24px; font-weight:bold;" disabled="disabled" name="result" size="4"> </td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td><textarea name="textarea2" id="out" style="height:10em;width:400px"></textarea></td>
    <td>&nbsp;</td>
  </tr>
</table>
<p>результат:</p>
<script>
function isSpace(s){
return (s==" " || s=="n" || s=="13" || s=="t" || s=="r")?true:false
}
function count(){
var c=0
var i
var prevspace=true
var str=document.forms.form.textarea.value
for(i=str.length-1;i>=0;i--){
if(isSpace(str.charAt(i)) && prevspace){c++
}else{
c++
}
prevspace=isSpace(str.charAt(i))
}
document.forms.form.result.value=c
if (c<=70 ) {c=1} else {if (c<=140) {c=2} else {if (c<=210) {c=3} else {if (c<=280) {c=4} else {if (c<=350) {c=5} else {alert('Больше 350 вводить нельзя!'); var bb=1} }}}}
document.forms.form.sms.value=c

return false
}
</script>


</form>
</body>
</html>

  Ответить  
 
 автор: АЯ   (25.01.2010 в 01:03)   письмо автору
 
   для: verg   (25.01.2010 в 00:12)
 

Два onKeyup'a в одном теге, да ещё плюс onkeypress - это что-то!
onkeypress уберите вовсе, два onKeyup'a соедините в один:
onkeyup="count (); oJS.strNormalize (this)"


Но скрипт у вас получился, конечно, ужасным.
Посмотрите в качестве примера http://www.softtime.ru/forum/read.php?id_forum=4&id_theme=54089

  Ответить  
 
 автор: verg   (25.01.2010 в 11:06)   письмо автору
 
   для: АЯ   (25.01.2010 в 01:03)
 

>Два onKeyup'a в одном теге, да ещё плюс onkeypress - это что-то!
Плохо знаю JS, я сообрал этот код из 2 скриптов.

>Но скрипт у вас получился, конечно, ужасным.
На сколько ужастным? Сильно отразится на его работоспособности?

  Ответить  
 
 автор: verg   (25.01.2010 в 16:26)   письмо автору
 
   для: verg   (25.01.2010 в 11:06)
 

Как в js вывести значение переменой просто на странице, что типа
<script>document.write ("А это работает оператор Write ()"c);</script>

Чтоб в этом коде вывести еще переменную например с, которая описывается в JS.

  Ответить  
 
 автор: АЯ   (25.01.2010 в 16:46)   письмо автору
 
   для: verg   (25.01.2010 в 16:26)
 

"просто на странице" - понятие аморфное.

Страница - это, прежде всего, прямоугольник, который называется тегом <BODY>, внутри
которого есть ещё какие-то прямоугольники - всякие разные теги (внутри которых тоже есть
свои "прямоугольники")...

Так что вам надо вывести не "просто на странице", а в каком-то из этих "прямоугольников".


Каждый из "прямоугольников" (тегов) может быть как-то ОТМЕЧЕН, чтобы к этому тегу можно было
обратиться НАПРЯМУЮ. Для этого тегу присваивают какой-то id или name.

И вот тогда к этому конкретному тегу (с конкретным id или name) можно обратиться
и можно записать в него всё то, что вам надо.

Пример:
<body>
<input type="button" value="вывести в DIV" onclick="var www = 'переменная'; document.getElementById ('first').innerHTML = www">
<input type="button" value="вывести в INPUT" onclick="var zzz = 'другая переменная'; document.getElementsByName ('second') [0].value = zzz">

<br>...
<br><input name="second">
<br>...
<br><div id="first"></div>
<br>...
</body>

  Ответить  
 
 автор: verg   (25.01.2010 в 19:13)   письмо автору
 
   для: АЯ   (25.01.2010 в 16:46)
 

Мне нужно в ниже преведеном коде, чтоб в поле result2 был подсчет символов из поля textarea2. В даном коде уже реализовано отоброжение количества вводимыл символов в поле textarea, количество символов отоброжается в поле result.
Я хотел спомощью того же скрипта подсчитать символы в поле textarea2, но у меня не получилось. Может у кого нибудь получится что-нибудь, в JS плохо разбираюсь.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script type="text/javascript">
/* Javascript functions */
function JSfunc()
{
    /* Making transliteration! */
    this.strTranslit = function(el)
    {
        new_el = document.getElementById('out');
        A = new Array();
        A["Ё"]="YO";A["Й"]="I";A["Ц"]="TS";A["У"]="U";A["К"]="K";A["Е"]="E";A["Н"]="N";A["Г"]="G";A["Ш"]="SH";A["Щ"]="SCH";A["З"]="Z";A["Х"]="H";A["Ъ"]="'";
        A["ё"]="yo";A["й"]="i";A["ц"]="ts";A["у"]="u";A["к"]="k";A["е"]="e";A["н"]="n";A["г"]="g";A["ш"]="sh";A["щ"]="sch";A["з"]="z";A["х"]="h";A["ъ"]="'";
        A["Ф"]="F";A["Ы"]="I";A["В"]="V";A["А"]="A";A["П"]="P";A["Р"]="R";A["О"]="O";A["Л"]="L";A["Д"]="D";A["Ж"]="ZH";A["Э"]="E";
        A["ф"]="f";A["ы"]="i";A["в"]="v";A["а"]="a";A["п"]="p";A["р"]="r";A["о"]="o";A["л"]="l";A["д"]="d";A["ж"]="zh";A["э"]="e";
        A["Я"]="YA";A["Ч"]="CH";A["С"]="S";A["М"]="M";A["И"]="I";A["Т"]="T";A["Ь"]="'";A["Б"]="B";A["Ю"]="YU";
        A["я"]="ya";A["ч"]="ch";A["с"]="s";A["м"]="m";A["и"]="i";A["т"]="t";A["ь"]="'";A["б"]="b";A["ю"]="yu";
        new_el.value = el.value.replace(/([\u0410-\u0451])/g,
            function (str,p1,offset,s) {
                if (A[str] != 'undefined'){return A[str];}
            }
        );
    }
    /* Normalizes a string, eю => eyu */
    this.strNormalize = function(el)
    {
        if (!el) { return; }
        this.strTranslit(el);
    }
}
var oJS = new JSfunc();

</script>

<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<title>Untitled Document</title>
</head><body>
<form name="form" onsubmit="return false" action="javascript:void()">
<textarea  onkeypress="count()"  onkeyup="count (); oJS.strNormalize (this)" name="textarea" id="in" style="height:10em;width:400px"></textarea>

<br>
Сообщений: 
<input style="border:0px; background-color:#FFFFFF; color:#FF0000; font-size:24px; font-weight:bold;"  disabled="disabled" name="sms" size="4"> 
<br>Символов:
<input style="border:0px; background-color:#FFFFFF; color:#FF0000; font-size:24px; font-weight:bold;" disabled="disabled" name="result" size="4"><br>
</form>
<form name="form2" onsubmit="return false" action="javascript:void()">

<textarea   onkeypress="count()"  onkeyup="count (); oJS.strNormalize (this)" name="textarea2" id="out" style="height:10em;width:400px"></textarea>
<br>
Сообщений: 
<input style="border:0px; background-color:#FFFFFF; color:#FF0000; font-size:24px; font-weight:bold;"  disabled="disabled" name="sms2" size="4"> 
<br>Символов:
<input style="border:0px; background-color:#FFFFFF; color:#FF0000; font-size:24px; font-weight:bold;" disabled="disabled" name="result2" size="4"><br>

</form>

<script>
function isSpace(s){
return (s==" " || s=="n" || s=="13" || s=="t" || s=="r")?true:false
}
function count(){
var bb=0
var c=0
var i
var prevspace=true
var str=document.forms.form.textarea.value
for(i=str.length-1;i>=0;i--){
if(isSpace(str.charAt(i)) && prevspace){c++
}else{
c++
}
prevspace=isSpace(str.charAt(i))
}
document.forms.form.result.value=c
if (c<=70 ) {c=1} else {if (c<=140) {c=2} else {if (c<=210) {c=3} else {if (c<=280) {c=4} else {if (c<=350) {c=5} else {if (c<=420) {c=6} else {if (c<=480) {c=7} else { c='X'   }   } }}}}}
document.forms.form.sms.value=c

return false
}
</script>
</body>
</html>

  Ответить  
 
 автор: АЯ   (25.01.2010 в 22:22)   письмо автору
 
   для: verg   (25.01.2010 в 19:13)
 

С какого раза до вас русские слова доходят?

Вам уже ответили, что onkeypress и onkeyup в одном теге одновременно использовать НЕ НАДО.

Зачем вы сюда во второй раз свою неисправленную лабуду постите?

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования