X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

2 страниц V   1 2 >
Открыть тему
Тема закрыта
> Не работает скрипт
SilverCross
SilverCross
Topic Starter сообщение 4.1.2012, 16:13; Ответить: SilverCross
Сообщение #1


Скрипт должен заменять слова жирным текстом, если они совпали с элементами заданного массива, но, ничего не происходит

<script>
function syntax(){
tags = [
"<html>",
"<head>",
"<body>"
];
var text = document.getElementById('text').innerText;
var textsplit = text.split(" ");
for (var i in textsplit) {
for (var t in tags) {
if (textsplit[i] == tags[t]) {
textsplit[i].replace(new RegExp(textsplit[i] ,'g'), "<b>"+textsplit[i]+"</b>");
}
}
}
var b=textsplit.join(" ")
document.getElementById('a').innerText=b;
}
</script>

<div contenteditable='true' id='text' onkeyup='syntax();'></div>
<div id='a'></div>


где косяк?
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Apay
Apay
сообщение 4.1.2012, 17:23; Ответить: Apay
Сообщение #2


(SilverCross @ 4.1.2012, 19:13) *
var text = document.getElementById('text').innerText;
скорей всего тут, можно попробовать заменить на innerHTML
и еще попробовать например вместо <body> &lt;body&gt;
не проверял, только предположения
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
SilverCross
SilverCross
Topic Starter сообщение 4.1.2012, 18:43; Ответить: SilverCross
Сообщение #3


Apay, нет, не работает
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
texno
texno
сообщение 4.1.2012, 21:07; Ответить: texno
Сообщение #4


(Apay @ 4.1.2012, 20:23) *
скорей всего тут, можно попробовать заменить на innerHTML

Не можно, а нужно, innerText это только для осла.

Непонятно зачем текст резать в массив, зачем?
Почему нельзя пройтись по всей строке, зачем строку резать а потом идти циклом по мелким кускам?
И хотелось бы реальный текст увидеть.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Apay
Apay
сообщение 5.1.2012, 9:09; Ответить: Apay
Сообщение #5


резюмируя сказанное мной и texno получаем
<script type="text/javascript">
function syntax(){
tags = [ "&lt;html&gt;", "&lt;head&gt;", "&lt;body&gt;" ];
var text = document.getElementById('text').innerHTML;
for( i in tags )
text = text.replace( new RegExp("("+tags[i]+")","g"), "<b>$1</b>" );
text = text.replace( new RegExp("(<b>){2,}","g"), "<b>" ).replace( new RegExp("(</b>){2,}","g"), "</b>" );
document.getElementById('a').innerHTML=text;
}
</script>

<div contenteditable='true' id='text' onkeyup='syntax();' style="height:50px;"></div>
<div id='a'></div>
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
SilverCross
SilverCross
Topic Starter сообщение 5.1.2012, 16:05; Ответить: SilverCross
Сообщение #6


Apay,
texno, черт, ребята, то что нужно!
спасибо большое!
поясню свой ход
я делаю, скажем так, подсветку синтаксиса
я думал весь текст разбивать на массив
отдельный елемент массива - слово
потом бегать по циклу и искать, есть ли совпадения с 1го и 2го массива
и если есть, заменять елемент массива (который разбивал на слова), на елемент, подчеркнутый жирным текстом
и функц. join присоединять его
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
SilverCross
SilverCross
Topic Starter сообщение 6.1.2012, 14:31; Ответить: SilverCross
Сообщение #7


[JS]
<style>
.tags {
color:#a511b2;
}
.parameters {
color:#ba840f;
}
</style>
<script type="text/javascript">

function syntax(){
tags = [ "&lt;", "&gt;", "html", "body", "head"];
parameters = ["width", "height", "border", "background"];
var div = document.getElementById('text');
var text = document.getElementById('text').innerHTML;
for( i in tags )
text = text.replace( new RegExp("("+tags[i]+")","g"), "<span class='tags'>$1</span>" );
for (i in parameters)
text = text.replace( new RegExp("("+parameters[i]+")","g"), "<span class='parameters'>$1</span>" );
document.getElementById('text').innerHTML="<code>"+text+"</code>";
if (div.createTextRange)
{
var r = div.createTextRange();
r.collapse(false);
r.select();
}
}
</script>

<div contenteditable='true' id='text' onkeyup='syntax();' style="height:50px;"></div>
[/JS]

теперь нужно изменять текст прямиком в div
все заменяет, но после каждого введенного символа курсор перемещается в начало строки, а нужно чтобы оставался в конце строки
как такое реализовать?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
texno
texno
сообщение 6.1.2012, 17:55; Ответить: texno
Сообщение #8


Я пытался найти управление курсором для contenteditable с нулевым успехом. Если тебе повезёт больше, поделись, тоже интересно.
Переходи на инпут без бордюра, для полей есть все нужные функции.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
SilverCross
SilverCross
Topic Starter сообщение 6.1.2012, 18:58; Ответить: SilverCross
Сообщение #9


texno, т.е. на Textarea?
это будет сложнее...
смотрел скрипты с подсветкой под textarea...километровые, ужасные, ничего не понятно
была идея, опять же, вытягивать строку с поля, бить на массив, сравнивать с вторым массивом, и если совпадение есть, применять style.color к елементу массива, опять же соединять и бросать обратно в поле

это лично мое мнение, но может есть вариант проще?
или , скажем, более правильный?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
SilverCross
SilverCross
Topic Starter сообщение 6.1.2012, 19:23; Ответить: SilverCross
Сообщение #10


глупость написал, не работает, есть идеи?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
2 страниц V   1 2 >
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Крауд-маркетинг который работает | Эффективные Ру-ссылки
1 Azyuka 1055 13.2.2024, 19:36
автор: tascha56
Открытая тема (нет новых ответов) Скрипт поисковика видео StrongTube
3 3josoft 1574 14.8.2023, 14:45
автор: 3josoft
Открытая тема (нет новых ответов) Скрипт приема платежей p2p с карты на карту card2card
Скрипт приема платежей p2p с карты на карту card2card
15 zladey1986 7834 26.3.2023, 8:54
автор: Palundra
Открытая тема (нет новых ответов) Продам скрипт перевода постов и комментариев
4 Tutich 787 19.1.2023, 17:23
автор: Tutich
Открытая тема (нет новых ответов) Битрикс скрипт нативной установки
3 Nemo 2451 20.11.2022, 10:09
автор: Webmaster24


 



RSS Текстовая версия Сейчас: 20.4.2024, 7:14
Дизайн