PHP, HTML, JAVA, CSS, mySQL

Выделение всех чекбоксов + onClick

У меня такая проблема: есть 3 элемента checkbox, которые при нажатии на каждый из них onClick, активируют функции, которые в свою очередь изменяют текст в textarea. И есть кнопка "Выделить все!", которая выделяет(отмчает) все эти 3 чекбокса, используя функцию checkAll(). Но при выделении чекбоксов кнопкой "Выделить все!", текст в textarea не меняется, т.е. не срабатывает onClick, используемый в чекбоксах.
Вопрос: Как сделать так, чтобы при нажатии на кнопку "Выделить все!",
1) выделялись(отмечались) все чекбоксы;
2) изменялся текст в textarea?

Помогите пожалуйста!

Вот код:

<html>
<head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1251" />

<script LANGUAGE="JavaScript">
<!-- Begin
function replaceChars(entry) {
out = "очепятка"; // это слово заменяем
add = "опечатка"; // на это
temp = "" + entry; // temporary holder

while (temp.indexOf(out)>-1) {
pos= temp.indexOf(out);
temp = "" + (temp.substring(0, pos) + add +
temp.substring((pos + out.length), temp.length));
}
document.FormPopUp.TxtPopUp.value = temp;
}
// End -->

<!-- Begin
function replaceChars1(entry) {
out = "--"; // этот символ заменяем
add = " - "; // на этот
temp = "" + entry; // temporary holder

while (temp.indexOf(out)>-1) {
pos= temp.indexOf(out);
temp = "" + (temp.substring(0, pos) + add +
temp.substring((pos + out.length), temp.length));
}
document.FormPopUp.TxtPopUp.value = temp;
}
// End -->

<!-- Begin
function replaceChars2(entry) {
out = "(dp.ru)"; // это выражение
add = ""; // удаляем
temp = "" + entry; // temporary holder

while (temp.indexOf(out)>-1) {
pos= temp.indexOf(out);
temp = "" + (temp.substring(0, pos) + add +
temp.substring((pos + out.length), temp.length));
}
document.FormPopUp.TxtPopUp.value = temp;
}
// End -->

<!-- Begin
function checkAll() {
for (var j = 1; j <= 3; j++) {
box = eval("document.FormPopUp.C" + j);
if (box.checked == false) box.checked = true;
}
}
// End -->
</script>

</head>

<body>
<center>

<form name=FormPopUp>
<table border=1>
<tr>
<td colspan=3 ALIGN="right" bgcolor="gray">
<input type=button value="Включить все!" onClick="checkAll();" onMouseOver="style.color=blue" onMouseOut="style.color=black">
</td>
</tr>

<tr>
<td colspan=3 align="center">
<textarea name=TxtPopUp rows="4" cols="35" value="">очепятка--(dp.ru)</textarea>
</td>
</tr>

<tr>
<td><center>

<div style="width:300px; height:100px;">
<TABLE BORDER=1 wiDTH=300 height=100 CELLPADDING=0 CELLSPACING=0>

<TR>
<TD align="center">
<input type=checkbox name=C1 onClick="replaceChars(document.FormPopUp.TxtPopUp. value);">Исправить</center>
</td>
<td>
<center> очепятка</center>
</td>
<td>
<center> опечатка</center>
</td>
</tr>

<tr>
<td><center>
<input type=checkbox name=C2 onClick="replaceChars1(document.FormPopUp.TxtPopUp .value);">Исправить</center>
</td>
<td>
<center>--</center>
</td>
<td>
<center> - </center>
</td>
</tr>

<tr>
<td><center>
<input type=checkbox name=C3 onClick="replaceChars2(document.FormPopUp.TxtPopUp .value);">Исправить</center>
</td>
<td>
<center> (dp.ru) </center>
</td>
<td>
<center> "удалить" </center>
</td>
</tr>

</table>
</div>

</TD>
</TR>
</TABLE>

</form>
</center>

</body>
</html>

А зачем тебе это? Что проверять?



Пока попробуй это.





<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"><html><head>
<title>Выделение всех чекбоксов + onClick</title>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1251">
<meta name="generator" content="CSE HTML Validator Халявной Версии">
<link rel="stylesheet" type="text/css" href="*.css">
<script type="text/javascript" src="checkbox.js"></script>
</head>

<body>


<div align="center">Выделение всех чекбоксов + onClick<br>
У меня такая проблема: есть 3 элемента checkbox, которые при нажатии на каждый из них onClick, активируют функции, которые в свою очередь изменяют текст в textarea. И есть кнопка &quot;Выделить все!&quot;, которая выделяет(отмчает) все эти 3 чекбокса, используя функцию checkAll(). Но при выделении чекбоксов кнопкой &quot;Выделить все!&quot;, текст в textarea не меняется, т.е. не срабатывает onClick, используемый в чекбоксах.
Вопрос: Как сделать так, чтобы при нажатии на кнопку &quot;Выделить все!&quot;,
1) выделялись(отмечались) все чекбоксы;
2) изменялся текст в textarea?
<br><br>
Помогите пожалуйста!

Вот код:
<form name="FormPopUp" action="*">
<table border="1" cellpadding="0" cellspacing="0">
<tr><td align="right" bgcolor="gray">
<input type="button" value="Включить всЁ!" onclick="checkAll();" style="cursor: pointer;" onmouseover="this.style.color=blue" onmouseout="this.style.color=black">
</td></tr>

<tr><td align="center">
<textarea name="TxtPopUp" rows="4" cols="35">очепятка--(dp.ru)</textarea>
</td></tr>

<tr><td align="center">
<div style="width:300px; height:100px;">
<table border="1" width="300" height="100" cellpadding="0" cellspacing="0">

<tr><td align="center">
<span style="cursor: pointer;"><input type="checkbox" value="" name="c1" id="c1" onclick="replaceChars1(document.FormPopUp.TxtPopUp .value);"><label for="c1"><span style="cursor: pointer;">Исправить</span></label></span>
</td><td>
<div align="center">очепятка</div>
</td><td>
<div align="center">опечатка</div>
</td></tr>

<tr><td align="center">
<span style="cursor: pointer;"><input type="checkbox" value="" name="c2" id="c2" onclick="replaceChars2(document.FormPopUp.TxtPopUp .value);"><label for="c2"><span style="cursor: pointer;">Исправить</span></label></span>
</td><td>
<div align="center">--</div>
</td><td>
<div align="center">-</div>
</td></tr>

<tr><td align="center">
<span style="cursor: pointer;"><input type="checkbox" value="" name="c3" id="c3" onclick="replaceChars3(document.FormPopUp.TxtPopUp .value);"><label for="c3"><span style="cursor: pointer;">Исправить</span></label></span>
</td><td>
<div align="center">(dp.ru)</div>
</td><td>
<div align="center">&quot;удалить&quot;</div>
</td></tr></table></div>

</td></tr>
</table>

</form>
</div>

</body>
</html>

--------------------

function replaceChars1(entry){
self.focus();
var out="очепятка";//это слово заменяем
var add="опечатка";//на это
var temp=""+entry;//temporary holder
var pos="";
while (temp.indexOf(out)>-1){
pos=temp.indexOf(out);
temp=""+(temp.substring(0, pos)+add+
temp.substring((pos+out.length), temp.length));};
document.FormPopUp.TxtPopUp.value=temp;
};//end function replaceChars1(entry)
//------------------
function replaceChars2(entry){
self.focus();
var out="--";//этот символ заменяем
var add="-";//на этот
var temp=""+entry;//temporary holder
var pos="";
while (temp.indexOf(out)>-1){
pos=temp.indexOf(out);
temp=""+(temp.substring(0, pos)+add+
temp.substring((pos+out.length), temp.length));};
document.FormPopUp.TxtPopUp.value=temp;
};//end function replaceChars1(entry)
//----------------------
function replaceChars3(entry){
self.focus();
var out="(dp.ru)";//это выражение
var add="";//удаляем
var temp=""+entry;//temporary holder
var pos="";
while (temp.indexOf(out)>-1){
pos=temp.indexOf(out);
temp=""+(temp.substring(0, pos)+add+
temp.substring((pos+out.length), temp.length));};
document.FormPopUp.TxtPopUp.value=temp;
};//end function replaceChars1(entry)
//-------------------------
function checkAll(){
self.focus();
var box=""; var FunctionObj=""; var j=0; var i=0;
i=getLikeElements("input", "type", "checkbox").length;
while (j!=i){j++;
box=eval("document.FormPopUp.c"+j);
FunctionObj=eval("replaceChars"+j);
if (box.checked==false){box.checked=true;
FunctionObj(document.FormPopUp.TxtPopUp.value);}};
};//end function checkAll()
//--------------------
function getLikeElements(TagName, attrName, attrValue){
var startSet="";
var endSet=new Array();
if (TagName){startSet=document.getElementsByTagName(T agName);}
else {startSet=(document.all)?document.all: document.getElementsByTagName("*");}
if (attrName){
for (var i=0; i<startSet.length; i++){
if (startSet[i].getAttribute(attrName)){
if (attrValue){
if (startSet[i].getAttribute(attrName)==attrValue){
endSet[endSet.length]=startSet[i];}}
else {endSet[endSet.length]=startSet[i];}}}}
else {endSet=startSet;}
return endSet;
};//end function getLikeElements(TagName, attrName, attrValue)

Цитата:
Сообщение от BlackApricot
А зачем тебе это? Что проверять?
Это небольшая процедурка из программы, которую я делаю на диплом. Суть этой процедурки в том, что она исравляет наиболее типичные опечатки(ошибки), встречающееся в публикациях, с которыми и работает моя программа. А программа на диплом - это генератор сообщений СМИ в определенном формате, которые используют в аналитических подразделениях. Они там используют систему "Д", которая и работает с этими сообщениями СМИ в строго структурированной форме.

Спосибо, что отозвались!

P.S.:
На счет флуда, я просто был не в курсе. Теперь буду знать.

Добавлено через 1 час 9 минут 28 секунд

Вобщем, я создал документ 1.html и вставил в него код:


Код HTML1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"><html> <head> <title>Выделение всех чекбоксов + onClick</title> <meta http-equiv="Content-Type" content="text/html; charset=Windows-1251"> <meta name="generator" content="CSE HTML Validator Халявной Версии"> <link rel="stylesheet" type="text/css" href="*.css"> <script type="text/javascript" src="checkbox.js"></script> </head>   <body>   <form name="FormPopUp" action="*"> <table border="1" cellpadding="0" cellspacing="0"> <tr><td align="right" bgcolor="gray"> <input type="button" value="Включить всЁ!" onclick="checkAll();" style="cursor: pointer;" onmouseover="this.style.color=blue" onmouseout="this.style.color=black"> </td></tr>   <tr><td align="center"> <textarea name="TxtPopUp" rows="4" cols="35">очепятка--(dp.ru)</textarea> </td></tr>   <tr><td align="center"> <div style="width:300px; height:100px;"> <table border="1" width="300" height="100" cellpadding="0" cellspacing="0">   <tr><td align="center"> <span style="cursor: pointer;"><input type="checkbox" value="" name="c1" id="c1" onclick="replaceChars1(document.FormPopUp.TxtPopUp .value);"><label for="c1"><span style="cursor: pointer;">Исправить</span></label></span> </td><td> <div align="center">очепятка</div> </td><td> <div align="center">опечатка</div> </td></tr>   <tr><td align="center"> <span style="cursor: pointer;"><input type="checkbox" value="" name="c2" id="c2" onclick="replaceChars2(document.FormPopUp.TxtPopUp .value);"><label for="c2"><span style="cursor: pointer;">Исправить</span></label></span> </td><td> <div align="center">--</div> </td><td> <div align="center">-</div> </td></tr>   <tr><td align="center"> <span style="cursor: pointer;"><input type="checkbox" value="" name="c3" id="c3" onclick="replaceChars3(document.FormPopUp.TxtPopUp .value);"><label for="c3"><span style="cursor: pointer;">Исправить</span></label></span> </td><td> <div align="center">(dp.ru)</div> </td><td> <div align="center">&quot;удалить&quot;</div> </td></tr></table></div>   </td></tr> </table>   </form> </div>   </body> </html>
Затем, создал документ checkbox.js и вставил туда код:


Код Javascript1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 function replaceChars1(entry){ self.focus(); var out="очепятка";//это слово заменяем var add="опечатка";//на это var temp=""+entry;//temporary holder var pos=""; while (temp.indexOf(out)>-1){ pos=temp.indexOf(out); temp=""+(temp.substring(0, pos)+add+ temp.substring((pos+out.length), temp.length));}; document.FormPopUp.TxtPopUp.value=temp; }//end function replaceChars1(entry) //------------------ function replaceChars2(entry){ self.focus(); var out="--";//этот символ заменяем var add="-";//на этот var temp=""+entry;//temporary holder var pos=""; while (temp.indexOf(out)>-1){ pos=temp.indexOf(out); temp=""+(temp.substring(0, pos)+add+ temp.substring((pos+out.length), temp.length));}; document.FormPopUp.TxtPopUp.value=temp; }//end function replaceChars1(entry) //---------------------- function replaceChars3(entry){ self.focus(); var out="(dp.ru)";//это выражение var add="";//удаляем var temp=""+entry;//temporary holder var pos=""; while (temp.indexOf(out)>-1){ pos=temp.indexOf(out); temp=""+(temp.substring(0, pos)+add+ temp.substring((pos+out.length), temp.length));}; document.FormPopUp.TxtPopUp.value=temp; }//end function replaceChars1(entry) //------------------------- function checkAll(){ self.focus(); var box=""; var FunctionObj=""; var j=0; var i=0; i=getLikeElements("input", "type", "checkbox").length; while (j!=i){j++; box=eval("document.FormPopUp.c"+j); FunctionObj=eval("replaceChars"+j); if (box.checked==false){box.checked=true; FunctionObj(document.FormPopUp.TxtPopUp.value);}}; }//end function checkAll() //-------------------- function getLikeElements(TagName, attrName, attrValue){ var startSet=""; var endSet=new Array(); if (TagName){startSet=document.getElementsByTagName(T agName);} else {startSet=(document.all)?document.all: document.getElementsByTagName("*");} if (attrName){ for (var i=0; i<startSet.length; i++){ if (startSet[i].getAttribute(attrName)){ if (attrValue){ if (startSet[i].getAttribute(attrName)==attrValue){ endSet[endSet.length]=startSet[i];}} else {endSet[endSet.length]=startSet[i];}}}} else {endSet=startSet;} return endSet; }//end function getLikeElements(TagName, attrName, attrValue)
Не знаю, почему-то не работает..(ни при клике по чекбоксам, ни при нажатии на кнопку "Выделить всЕ!") пишет: "Ошибка на странице!".
Еще я не понял для чего функция getLikeElements. Если не сложно, объясни.

"P.S.:
На счет флуда, я просто был не в курсе. Теперь буду знать."
Это ты с кем разговаривал?



Зачем тебе программулина понятно. Не понятно как ты собираешься иметь много боксов? Или реально будет всё подругому?
В JS есть библиотека, удобная вещь для похожих целей. Сильно похожа на массивы, но намного проще.



У меня всё работает в ослике, опере, лисе и навигаторе, за мелкими исключениями одинаково. Кстати, в хтмээле есть "лишние спаны", они для лисы!
Сейчас, перед упаковкой, попробовал в лисе и ослике, на этой винде других нет. ВСЁ работает.
Может ты создал файлы, через самую красивую часть женского тела, или плавность изгиба твоих рук превышает критическую отметку?
В РАРе оба файла. P.S. А в какой винде ты пробуешь?

Зачем эта функция?
function getLikeElements(TagName, attrName, attrValue)
Она считает теги с заданным атрибутом и значением
i=getLikeElements("input", "type", "checkbox").length;//сколько их?
Или ты собираешься каждый раз ручками подставлять? То, что, ты желаешь работать ручками, это хорошо, но не в этом случае. Хотя можешь её выкинуть.
Если что упустил, пиши.

На счет флуда:
Видимо я перепутал этот форум с другим, на котором мне сказали,что "Помогите, пожалуйста!" - это флуд.

Чекбоксов будет всего 29, не знаю нужна ли тут библиотека JS, о которой ты говорил.

Равотаю в 2008 XP SP3, а разве не пофиг где? Поидее,должно работать везде..

Про самую красивую женскую часть тела - не думаю..")

Спасибо, что снова уделил мне время.

Ты главное не сказал, заработало?

Я учусь в военной академии и к сожалению, доступ к компу и нету имею только дома вечером, т.к. утром пары, которые я, как следствие моей службы, не могу промахать. Я обязательно выйду в интернет с телефона на буке, но это только после обеда. И сразу отвечу. Кстати, сейчас я вообще с телефона сижу.. Учеба - ни куда не деться.

Добавлено через 1 час 20 минут 56 секунд
У меня получилось проверить! Все работает!!! Спасибо большое!

Есть еще один вопрос:
В конечном виде, моя процедурка должна изменять 29 ошибок, т.е. в checkbox.js будет 29 функций replaceChars(entry), а это, как мне кажется, весьма избыточно. Не подскажешь, как объединить функции исправления ошибок в одну, т.е., чтобы в одной функции replaceChars(entry) выполнялось:
и
var out="очепятка";
var add="опечатка";
и
var out="--";
var add=" - ";
и
var out="(dp.ru)";
var add="";

Если будет время, подскажи Спасибо еще раз!

Посмотрю.

Напиши почему сразу не пошло? А то вогнал меня в большие моральные шатания, пришлось у котяры валерьянку отнимать!

Честно, не хотел лишать твоего кота этого божественного напитка
На сколько я помню, конечный код отличается от первого.. Чем - не помню, нет возможности сейчас посмотреть. Вечером посмотрю, тогда и напишу.

Если ты имел введу свою и мою версии, то да, у тебя в JS были ошибки не совместимые с жизнедеятельностью скрипта.

P.S. Равотаю в 2008 XP SP3, а разве не пофиг где? Поидее,должно работать везде..
Чтоб работало везде надо попотеть! Называется кроссбраузерность!

P.S. Про самую красивую женскую часть тела - не думаю..")
Совсем генералы мужика замордовали, уже даже и не думает!

Как я тебя понял, так попроще и сделал. Кстати. Здесь библиотека будет удобней двух массивов, сам сделаешь.
У меня такая проблема: есть 3 элемента checkbox, которые при нажатии на каждый из них onClick, активируют функции, которые в свою очередь изменяют текст в textarea. И есть кнопка "Выделить все!", которая выделяет(отмчает) все эти 3 чекбокса, используя функцию checkAll(). Но при выделении чекбоксов кнопкой "Выделить все!", текст в textarea не меняется, т.е. не срабатывает onClick, используемый в чекбоксах.
Вопрос: Как сделать так, чтобы при нажатии на кнопку "Выделить все!",
1) выделялись(отмечались) все чекбоксы;
2) изменялся текст в textarea?

Помогите пожалуйста!

Вот код:

<html>
<head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1251" />

<script LANGUAGE="JavaScript">
<!-- Begin
function replaceChars(entry) {
out = "очепятка"; // это слово заменяем
add = "опечатка"; // на это
temp = "" + entry; // temporary holder

while (temp.indexOf(out)>-1) {
pos= temp.indexOf(out);
temp = "" + (temp.substring(0, pos) + add +
temp.substring((pos + out.length), temp.length));
}
document.FormPopUp.TxtPopUp.value = temp;
}
// End -->

<!-- Begin
function replaceChars1(entry) {
out = "--"; // этот символ заменяем
add = " - "; // на этот
temp = "" + entry; // temporary holder

while (temp.indexOf(out)>-1) {
pos= temp.indexOf(out);
temp = "" + (temp.substring(0, pos) + add +
temp.substring((pos + out.length), temp.length));
}
document.FormPopUp.TxtPopUp.value = temp;
}
// End -->

<!-- Begin
function replaceChars2(entry) {
out = "(dp.ru)"; // это выражение
add = ""; // удаляем
temp = "" + entry; // temporary holder

while (temp.indexOf(out)>-1) {
pos= temp.indexOf(out);
temp = "" + (temp.substring(0, pos) + add +
temp.substring((pos + out.length), temp.length));
}
document.FormPopUp.TxtPopUp.value = temp;
}
// End -->

<!-- Begin
function checkAll() {
for (var j = 1; j <= 3; j++) {
box = eval("document.FormPopUp.C" + j);
if (box.checked == false) box.checked = true;
}
}
// End -->
</script>

</head>

<body>
<center>

<form name=FormPopUp>
<table border=1>
<tr>
<td colspan=3 ALIGN="right" bgcolor="gray">
<input type=button value="Включить все!" onClick="checkAll();" onMouseOver="style.color=blue" onMouseOut="style.color=black">
</td>
</tr>

<tr>
<td colspan=3 align="center">
<textarea name=TxtPopUp rows="4" cols="35" value="">очепятка--(dp.ru)</textarea>
</td>
</tr>

<tr>
<td><center>

<div style="width:300px; height:100px;">
<TABLE BORDER=1 wiDTH=300 height=100 CELLPADDING=0 CELLSPACING=0>

<TR>
<TD align="center">
<input type=checkbox name=C1 onClick="replaceChars(document.FormPopUp.TxtPopUp. value);">Исправить</center>
</td>
<td>
<center> очепятка</center>
</td>
<td>
<center> опечатка</center>
</td>
</tr>

<tr>
<td><center>
<input type=checkbox name=C2 onClick="replaceChars1(document.FormPopUp.TxtPopUp .value);">Исправить</center>
</td>
<td>
<center>--</center>
</td>
<td>
<center> - </center>
</td>
</tr>

<tr>
<td><center>
<input type=checkbox name=C3 onClick="replaceChars2(document.FormPopUp.TxtPopUp .value);">Исправить</center>
</td>
<td>
<center> (dp.ru) </center>
</td>
<td>
<center> "удалить" </center>
</td>
</tr>

</table>
</div>

</TD>
</TR>
</TABLE>

</form>
</center>

</body>
</html>

Мне кажется, что я просто каряво вставил тогда скрипты, поэтому и не работало Что такое кросбраузерность я в курсе! Уже потел не раз по этому поводу.. (когда занимаешься web-дизайном - это очень актуально) Я имел ввиду то, что именно этот скрипт не прихотлив и должен работать везде. С "женскими частями" не так уж все и плохо, не надо понимать все так буквально

За помощь, большое спасибо! С тем кодом в моей готовой версии, js файл весил аж 15 kb, твоя новая версия около 3 kb. Оптимизация налицо!

Я увлекаюсь web-дизайном, да и просто дизайном.. Если, вдруг, что-нибудь понадобится в этой области, буду рад помочь. Еще раз, спасибо!

Добавлено через 1 час 28 минут 49 секунд
Все классно! Единственная непонятка в том, что не получается удалить выражения заключенные в скобки, например: (dp.ru) не удаляет полностью, а только внутреннюю часть (). Тоже и с [], и с {}.

Добавлено через 1 час 33 минуты 21 секунду
Цитата:
Сообщение от BlackApricot
Как я тебя понял, так попроще и сделал. Кстати. Здесь библиотека будет удобней двух массивов, сам сделаешь.
Я строил свой вопрос с самого начала основываясь на возможности исправления каждой ошибки в отдельности, хотя если подумать, то эти ошибки должны быть удалены в любом случае.. В этом случае, наличие чекбоксов - неоправдано. И исправление должно строиться всего лишь на нажатии одной кнопки "Исправить возможные ошибки". Попытался это исправить, основываясь на твоем коде:


Код HTML1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52   <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"> <html> <head> <title>Исправление ошибок одной кнопкой</title> <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1251" /> <meta name="generator" content="CSE HTML Validator Халявной Версии"> <link rel="stylesheet" type="text/css" href="*.css">   <SCRIPT LANGUAGE="JavaScript">   function replaceChars(who){ self.focus(); var val=document.Form.Txt.value; var box=eval("document.Form.c"+who); var re=new RegExp(eror[who], "gi"); document.Form.Txt.value=val.replace(re, repl[who]);  };//end function replaceChars(who) //-------------------------   var eror=new Array; eror[0]=" а"; eror[1]=" б"; eror[2]="ем"; eror[3]=" г"; eror[4]=" д";   var repl=new Array; repl[0]=" А"; repl[1]=" Б"; repl[2]="е."; repl[3]=" Г"; repl[4]=" Д"; //-----------------   </script> </head>   <body>   <center>  <font size="2" face="Geneva, Arial, Helvetica, sans-serif"><b>Автозамена и удаление словоформ в публикации:</b></font> <form name="Form"> <textarea name="Txt" rows="10" cols="74" value=""> аркада барабан вовлечение образованием галограмма дед девушка</textarea> <BR> <input type="button" value="Исправить возможные ошибки" onClick="replaceChars(2)"> </form> </center>   </body> </html>  
Но... мне не хватает рук, да и знаний в JS, чтобы довести начатое преобразование до ума.

В этом коде сразу видны ошибки:
onClick="replaceChars(2)" двойку зачем оставил?
var box=eval("document.Form.c"+who); эта строка теперь не имеет смысла
var re=new RegExp(eror[who], "gi"); а здесь теперь цикл нужен, или рядового поставишь перебирать массив? Сейчас только 3 элемент массива, и всё!

это, то что в глаза бросилось, угадай, оно у тебя работает?

Я не понял, ты просишь дальше делать, или сам будешь?

Цитата:
Сообщение от BlackApricot
В этом коде сразу видны ошибки:
onClick="replaceChars(2)" двойку зачем оставил?
var box=eval("document.Form.c"+who); эта строка теперь не имеет смысла
var re=new RegExp(eror[who], "gi"); а здесь теперь цикл нужен, или рядового поставишь перебирать массив? Сейчас только 3 элемент массива, и всё!

это, то что в глаза бросилось, угадай, оно у тебя работает?

Я не понял, ты просишь дальше делать, или сам будешь?
Понятно, что там двойка не нужна, это я так поставил, чтоб хоть что-то работало..
На счет строки, которая не имеет смысла - я догадывался. А вот с циклом уже сложнее.. Думаю, сам не справлюсь.. Понятно, что это не сложно, но я еще не на уровне.. Поможешь?

P.S.: немного раньше я задал вопрос, насчет того, почему не удаляются скобки, т.е. не заменяется "(dp.ru)" на "". Не знаешь в чем дело?

"P.S.: немного раньше я задал вопрос, насчет того, почему не удаляются скобки, т.е. не заменяется "(dp.ru)" на "". Не знаешь в чем дело?"

Согласись, без скобок в JS далеко не уедешь, а ты сразу, по варварски, удалять их кинулся...

А дело в replace()?, но это на пальцах рассказать не получится, надо читать до красных глаз, а потом ещё N раз перечитать....

function replaceStringi(s1, s2, s3){}; это можно использовать отдельно, как библиотеку.

А с JS библиотекой, я пролетел, оказалось, что это только в осле есть, теперь понятно почему Items() и Keys() используют VBS массив, микрософт без пакостей не может. Такую хорошую вещь испортили.

Цитата:
Сообщение от BlackApricot
"P.S.: немного раньше я задал вопрос, насчет того, почему не удаляются скобки, т.е. не заменяется "(dp.ru)" на "". Не знаешь в чем дело?"

Согласись, без скобок в JS далеко не уедешь, а ты сразу, по варварски, удалять их кинулся...

А дело в replace()?, но это на пальцах рассказать не получится, надо читать до красных глаз, а потом ещё N раз перечитать....

function replaceStringi(s1, s2, s3){}; это можно использовать отдельно, как библиотеку.

А с JS библиотекой, я пролетел, оказалось, что это только в осле есть, теперь понятно почему Items() и Keys() используют VBS массив, микрософт без пакостей не может. Такую хорошую вещь испортили.
Все супер! Твой новый вариант пполностью работает: одним махом и чекбоксы убрал, и все возможные скобки удалил.. Спасибо большое!
Но я попытался вставить твой код в свою шарманку(процедурку) - и... "Сценарий на этой веб-странице змедляет работу браузера. Если не остановить сценарий, компьютер может перестать реагировать на действия пользователя."
Т.е. виснет и работать отказывается...

Тоже происходит и в твоей версии, если заменить:

Код Javascript1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 //ячеек в массивах не может быть разное количество! var eror=new Array; eror[0]="ошибка 0"; eror[1]="ошибка 1"; eror[2]="(ошибкА) [со] {скобками}"; eror[3]="ошибка 3"; eror[4]="ошибка 4"; eror[5]="ошибка 5"; eror[6]="ошибка 6"; eror[7]="ошибка 7"; eror[8]="ошибка 8"; eror[9]="ошибка 9"; eror[10]="ошибка 10"; eror[11]="ошибка 11"; eror[12]="ошибка 12"; eror[13]="ошибка 13"; eror[14]="ошибка 14"; eror[15]="ошибка 15"; eror[16]="ошибка 16"; eror[17]="ошибка 17"; eror[18]="ошибка 18"; eror[19]="ошибка 19"; eror[20]="ошибка 20"; eror[21]="ошибка 21"; eror[22]="ошибка 22"; eror[23]="ошибка 23"; eror[24]="ошибка 24"; eror[25]="ошибка 25"; eror[26]="ошибка 26"; eror[27]="ошибка 27"; eror[28]="ошибка 28";   var repl=new Array; repl[0]="исправлена 0"; repl[1]="исправлена 1"; repl[2]="Да пофигу нам любые скобки"; repl[3]="несколько 3";//исправление repl[4]="";//            удаление repl[5]="штук 5"; repl[6]="удалилось 6"; repl[7]="исправлена 7"; repl[8]=""; repl[9]="исправлена 9"; repl[10]="исправлена 10"; repl[11]=""; repl[12]="исправлена 12"; repl[13]="исправлена 13"; repl[14]="исправлена 14"; repl[15]="исправлена 15"; repl[16]="исправлена 16"; repl[17]="исправлена 17"; repl[18]="исправлена 18"; repl[19]="исправлена 19"; repl[20]="исправлена 20"; repl[21]="исправлена 21"; repl[22]="исправлена 22"; repl[23]="исправлена 23"; repl[24]="исправлена 24"; repl[25]="исправлена 25"; repl[26]="исправлена 26"; repl[27]="исправлена 27"; repl[28]="исправлена 28";
на это:

Код Javascript1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 //ячеек в массивах не может быть разное количество! var eror=new Array; eror[0]="очепятка"; eror[1]="--"; eror[2]="(dp.ru)"; eror[3]="dp.ru"; eror[4]="с/х"; eror[5]="о-в"; eror[6]="шт."; eror[7]="2/3"; eror[8]="Муздрамтеатр"; eror[9]="Минкультуры"; eror[10]="РФ"; eror[11]="ФО"; eror[12]="СПб."; eror[13]="СПб"; eror[14]="2М"; eror[15]="совещание с руководителями"; eror[16]="ВУЗов"; eror[17]="проводит"; eror[18]="000"; eror[19]=" год "; eror[20]=" года "; eror[21]=" году "; eror[22]="рублей"; eror[23]="рубля"; eror[24]="процент "; eror[25]="процентов"; eror[26]="проценты"; eror[27]="криминальной"; eror[28]=" 010 ";   var repl=new Array; repl[0]="опечатка"; repl[1]=" - "; repl[2]=""; repl[3]=""; repl[4]="сельское хозяйство"; repl[5]="остров"; repl[6]="штат"; repl[7]="две трети"; repl[8]="Музыкально-драматический театр"; repl[9]="Министерство культуры"; repl[10]="Российская Федерация"; repl[11]="федеральный округ"; repl[12]=""; repl[13]=""; repl[14]="кв.м"; repl[15]="совещание руководителей"; repl[16]="вузов"; repl[17]="проведет"; repl[18]=" тыс."; repl[19]="г."; repl[20]="г."; repl[21]="г."; repl[22]="руб."; repl[23]="руб."; repl[24]="% "; repl[25]="%"; repl[26]="%"; repl[27]="криминогенной"; repl[28]="ОАО";
И, соответсвенно, это:

Код HTML1 <div><textarea name="TxtPopUp" rows="4" cols="40">ошибка 0; ошиБКА 1; (ошибкА) [со] {скобками} 2; Ошибка 3; ошибКа 4; ошибка 5; ошибка 6; ошибка 7; ошибка 8; ошибка 9; ошибка 10; ошибка 11; ОШИБКА 12; ошибка 13; ошибка 14; ошибка 15; ошибка 16; ошибка 17; ошибка 18; ошибка 19; ошибка 20; ошИБка 21; ошибка 22; ошибка 23; оШИБка 24; ошибка 25; ОШибка 26; ошибка 27; ошибка 28;</textarea></div>
на это:

Код HTML1 2 <div> <textarea name="TxtPopUp" rows="10" cols="74" value="">очепятка--(dp.ru) проводит--ВУЗов--dp.ru с/х о-в--шт. 55000 2/3 Муздрамтеатр--Минкультуры РФ--ФО СПб. 2М совещание с руководителями--ВУЗов проводит (134000 + 7000 = 141000) 2009 год --2010 года --в 2030 году --рублей--рубля--процент процентов--проценты криминальной-- 010 </textarea></div>
Не понимаю, в чем дело...

Если сходу, то, похоже на вечный цикл, влезь в цикл и посмотри, он заканчивается или нет.

Зачем новое окно? Люди от них избавляются. Оно нужно?, или ты просто знаешь как его вывести и как чукча, что вижу о том и пою? Хотя, поначалу все такие песни поют. Если оно нужно, чётко, по военному, доложи, зачем оно(знаешь кто такие военные?)

Зачем меняешь правильный код на свой? Используй валидатор!

Попробуй просто тексты поменять, не трогая код.

Ты чем отлаживаешь? В мире не существует программиста пишущего без ошибок.

Я посмотрю.

Добавлено через 48 минут 26 секунд
Цикл виснет на замене "ВУЗов" на "вузов", слово то одно, функции пофигу регистр, она слово и меняет бесконечно. Надо попробовать подумать головой, говорят, помогает.....Да чё тут думать, по строке надо двигаться.... это я сечас придумал!
Пойду подвигаю....

Добавлено через 1 час 45 минут 29 секунд
Моя плюха, виноват, но уже исправился.

function replaceStringi(s1, s2, s3){var i=0; var j=0; var x=0; var l=0;
if (s2==""){return s1;};//нельзя искать пустую строку
l=s2.length;//вынесено за цикл
s2=s2.toLocaleLowerCase();//для скорости
x=s3.length;
while (s2){i=s1.toLocaleLowerCase().indexOf(s2, j);//находим s2
if (i>=0){s1=s1.slice(0, i)+s3+s1.slice(i+l); j=i+x;}//если нашли, меняем
else {break;};//иначе больше нет s2, валим отсюда
};//end while (s2)
return s1;
};//end function replaceStringi()

Ещё не вечер, а ты уже тут!

Отвечаю четко, повоенному: popup мне был нужен, когда у меня было куча чекбоксов в таблице, которую я еще не умел прятать и мне ни как не хотелось видеть всю эту красоту в своем основном рабочем поле. Теперь,конечно, я от popup откажусь.
Кто такие военные, я, к сожалению, знаю..
Отлаживаю, в основном, ручками.. "Нотпад плюх плюх" - есть такой отладчик ) Может, что посоветуешь?
Код сейчас проверить не могу, опять учеба...
Спасибо, еще раз! Большое!

Вообщем, как обычно все работает , но опять косячок есть.. Удаляются выражения в скобках(вместе со скобками), которые написаны по русски, если латиница - то удаляется только текст, а скобки остаются. Не понятно в чем дело..
P.S.: С праздником!

Тебя тоже с праздником, и всех тоже, кому не лень всё это читать.

У меня с утра по праздничному связи не было. Служба поддержки лапши навешала, но очень культурно. А народ сказал, жди, сервер упал ихний, и народ оказался прав. Не знаю когда включили, только что надыбал.

"....а скобки остаются. Не понятно в чем дело.."

Ну вопервых, что с нерусских взять? Языка нашего не знают, КВН не смотрят, правильно их Михал Николаичь называет... А нам расхлёбывать...

Пойду поковыряю.

P.S. Больше не буду загадывать, когда вернусь!

Добавлено через 50 минут 2 секунды
Не понял, как спровоцировать ошибку, давай свой текст.
У меня всё работает.

Цитата:
Сообщение от BlackApricot
Не понял, как спровоцировать ошибку, давай свой текст.
У меня всё работает.

Вот, спровоцировал! Смотри на ошибку номер [3]:
У меня такая проблема: есть 3 элемента checkbox, которые при нажатии на каждый из них onClick, активируют функции, которые в свою очередь изменяют текст в textarea. И есть кнопка "Выделить все!", которая выделяет(отмчает) все эти 3 чекбокса, используя функцию checkAll(). Но при выделении чекбоксов кнопкой "Выделить все!", текст в textarea не меняется, т.е. не срабатывает onClick, используемый в чекбоксах.
Вопрос: Как сделать так, чтобы при нажатии на кнопку "Выделить все!",
1) выделялись(отмечались) все чекбоксы;
2) изменялся текст в textarea?

Помогите пожалуйста!

Вот код:

<html>
<head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1251" />

<script LANGUAGE="JavaScript">
<!-- Begin
function replaceChars(entry) {
out = "очепятка"; // это слово заменяем
add = "опечатка"; // на это
temp = "" + entry; // temporary holder

while (temp.indexOf(out)>-1) {
pos= temp.indexOf(out);
temp = "" + (temp.substring(0, pos) + add +
temp.substring((pos + out.length), temp.length));
}
document.FormPopUp.TxtPopUp.value = temp;
}
// End -->

<!-- Begin
function replaceChars1(entry) {
out = "--"; // этот символ заменяем
add = " - "; // на этот
temp = "" + entry; // temporary holder

while (temp.indexOf(out)>-1) {
pos= temp.indexOf(out);
temp = "" + (temp.substring(0, pos) + add +
temp.substring((pos + out.length), temp.length));
}
document.FormPopUp.TxtPopUp.value = temp;
}
// End -->

<!-- Begin
function replaceChars2(entry) {
out = "(dp.ru)"; // это выражение
add = ""; // удаляем
temp = "" + entry; // temporary holder

while (temp.indexOf(out)>-1) {
pos= temp.indexOf(out);
temp = "" + (temp.substring(0, pos) + add +
temp.substring((pos + out.length), temp.length));
}
document.FormPopUp.TxtPopUp.value = temp;
}
// End -->

<!-- Begin
function checkAll() {
for (var j = 1; j <= 3; j++) {
box = eval("document.FormPopUp.C" + j);
if (box.checked == false) box.checked = true;
}
}
// End -->
</script>

</head>

<body>
<center>

<form name=FormPopUp>
<table border=1>
<tr>
<td colspan=3 ALIGN="right" bgcolor="gray">
<input type=button value="Включить все!" onClick="checkAll();" onMouseOver="style.color=blue" onMouseOut="style.color=black">
</td>
</tr>

<tr>
<td colspan=3 align="center">
<textarea name=TxtPopUp rows="4" cols="35" value="">очепятка--(dp.ru)</textarea>
</td>
</tr>

<tr>
<td><center>

<div style="width:300px; height:100px;">
<TABLE BORDER=1 wiDTH=300 height=100 CELLPADDING=0 CELLSPACING=0>

<TR>
<TD align="center">
<input type=checkbox name=C1 onClick="replaceChars(document.FormPopUp.TxtPopUp. value);">Исправить</center>
</td>
<td>
<center> очепятка</center>
</td>
<td>
<center> опечатка</center>
</td>
</tr>

<tr>
<td><center>
<input type=checkbox name=C2 onClick="replaceChars1(document.FormPopUp.TxtPopUp .value);">Исправить</center>
</td>
<td>
<center>--</center>
</td>
<td>
<center> - </center>
</td>
</tr>

<tr>
<td><center>
<input type=checkbox name=C3 onClick="replaceChars2(document.FormPopUp.TxtPopUp .value);">Исправить</center>
</td>
<td>
<center> (dp.ru) </center>
</td>
<td>
<center> "удалить" </center>
</td>
</tr>

</table>
</div>

</TD>
</TR>
</TABLE>

</form>
</center>

</body>
</html>

Посмотрим.

Добавлено через 1 час 20 минут 14 секунд
Ну ты мастер создавать проблемы. Про таких говорят, у них всё в руках горит, ага, синим пламенем.

Цикл крутится с конца, а у тебя вот это "dp.ru" получается впереди большой строки и "оно" без скобок, так что большой строки уже нет, остались только скобки. Так что не русские буквы тут не причём.
Это называется "слово целиком", для начала переставь всё в "правильной" последовательности, у тебя конкретные пары ошибка/исправление, сыграй на этом. О результатах доложишь.

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

Понятно! Просто, не думал, что цикл кверх ногами работает, это все объясняет.. Спасибо!

"цикл кверх ногами работает"

Цикл работает так, как проще код написать, усложнять код ради "правильно" просто глупо. Хотя может и понадобиться, тогда и будем наворачивать.

Цитата:
Сообщение от BlackApricot
"цикл кверх ногами работает"

Цикл работает так, как проще код написать, усложнять код ради "правильно" просто глупо. Хотя может и понадобиться, тогда и будем наворачивать.
Думаю, это оправданно