[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Изменить выделенный текст
McLotos
Добрый вечер.
Воюю с selection, не могу понять почему текст не изменяется.
 if (textArea.selectionStart || textArea.selectionStart == '0') {
var startPos = textArea.selectionStart;
var endPos = textArea.selectionEnd;
var cursorPos = endPos;
var scrollTop = textArea.scrollTop;
var SelText=textArea.value.substring(startPos, endPos);
console.log(SelText);
SelText.style.fontcolor='red';
textArea.value = textArea.value.substring(0, startPos) + SelText + textArea.value.substring(endPos, textArea.value.length);

textArea.focus();
textArea.selectionStart = cursorPos;
textArea.selectionEnd = cursorPos;
textArea.scrollTop = scrollTop;

Ругается
Cannot set property 'fontcolor' of undefined
Хотя в консоль текст выводится

_____________
программирование - инструмент для решения конкретных задач, любая попытка спроектировать что-то универсальное приведет к провалу.©paul85
В любом случае тебе прийдётся пройти путь изобретения велосипеда, который прошли другие, только причиной твоего изобретения будет непонимание принципов работы велосипеда изобретённого другими людьми.©SlavaFr
jQuery это попытка использовать АН-225 для перевозки зубочистки
sergeiss
Почему 'fontcolor'? Напиши просто 'color'.

Плюс к этому, так ты и не изменишь ничего smile.gif Потому что ты устанавливаешь именно текст для textarea, а не html.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
McLotos
Цитата (sergeiss @ 24.02.2015 - 21:11)
Потому что ты устанавливаешь именно текст для textarea, а не html.

Вот об этом я не подумал. А как тогда нужно сделать?
В общем я тут пытаюсь написать wysiwyg с минимальным набором функций.
Но мне нужно чтобы пользователь видел красивый отредактированный текст, а я получал текст упакованный в тэги

_____________
программирование - инструмент для решения конкретных задач, любая попытка спроектировать что-то универсальное приведет к провалу.©paul85
В любом случае тебе прийдётся пройти путь изобретения велосипеда, который прошли другие, только причиной твоего изобретения будет непонимание принципов работы велосипеда изобретённого другими людьми.©SlavaFr
jQuery это попытка использовать АН-225 для перевозки зубочистки
McLotos
В общем пока реализовал так
<form method="post">
<select
name="page">
<option
id="{FORM.PageId}" value="{FORM.PageId}"></option>
<option
id="{FORM.PageId}" value="{FORM.PageId}">{FORM.PageName}</option>
</select><ul>
<li
id="bold">{LANG.Bold}</li>
<li
id="italic">{LANG.Italic}</li>
<li
id="underline">{LANG.Underline}</li>
<li
id="strikethrough">{LANG.Strikethrough}</li></ul>
<span>
{LANG.Size}</span><input type="number" id="size" min="5" max="15">
<span>
{LANG.Color}</span><input type="color" id="color">
<textarea
id="article" name="article"></textarea>
<input
type="submit" name="add" value="{FORM.liCreate}">
</form>

buttons = document.getElementsByTagName('li');
EditSize = document.getElementById('size');
EditColor = document.getElementById('color');
for (i=0; i<buttons.length; i++) {
buttons[i].onclick=function(){
switch(this.id)
{
case 'bold':
wrapTag(document.getElementById('article'),'','');
break
case
'italic':
wrapTag(document.getElementById('article'),'','');
break
case
'underline':
wrapTag(document.getElementById('article'),'','');
break
case
'strikethrough':
wrapTag(document.getElementById('article'),'','');
break
}
}
}

EditSize.onchange = function(){wrapTag(document.getElementById('article'),'','')};
EditColor.onchange = function(){wrapTag(document.getElementById('article'),'+thisvalue+''>','')};
}

function wrapTag(textArea, openTag, closeTag) {
if (textArea.selectionStart || textArea.selectionStart == '0') {
var startPos = textArea.selectionStart;
var endPos = textArea.selectionEnd;
var cursorPos = endPos;
var scrollTop = textArea.scrollTop;
textArea.value = textArea.value.substring(0, startPos)
+
openTag
+ textArea.value.substring(startPos, endPos)
+
closeTag
+ textArea.value.substring(endPos, textArea.value.length);
cursorPos += openTag.length + closeTag.length;

}
}



_____________
программирование - инструмент для решения конкретных задач, любая попытка спроектировать что-то универсальное приведет к провалу.©paul85
В любом случае тебе прийдётся пройти путь изобретения велосипеда, который прошли другие, только причиной твоего изобретения будет непонимание принципов работы велосипеда изобретённого другими людьми.©SlavaFr
jQuery это попытка использовать АН-225 для перевозки зубочистки
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.