Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

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

 

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

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

тема: Текст появляется и выбирается
 
 автор: Eugene77   (23.04.2009 в 17:19)   письмо автору
 
 

Я пытаюсь сделать так, чтобы при наведении курсора на текст он заменялся на другой текст и становился выбранным. Но у меня не получается даже и близко.
Вот, например, так пишу:
<span onmouseover="this.text='New text';">Initial text</span>

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

  Ответить  
 
 автор: PAT   (23.04.2009 в 19:55)   письмо автору
 
   для: Eugene77   (23.04.2009 в 17:19)
 

<html>
<head>
<script>
function f ()
{
var r = document.body.createTextRange ();
r.moveToPoint (window.event.x, window.event.y);
r.expand ('sentence'); r.select ();
}
</script>
</head>
<body>
<span onmouseover="this.innerText = 'New text.'; f ()">Initial text</span> 
</body>
</html>
only MSIE

  Ответить  
 
 автор: Eugene77   (23.04.2009 в 20:43)   письмо автору
 
   для: PAT   (23.04.2009 в 19:55)
 

да уж!
Впечатляет!
Интересные возможности у IE есть!

Но мне бы хотелось,чтобы и в других редакторах, если даже текст не выделялся бы сам собой,то хотя бы его можно было бы выделить мышкой, а то что-то созданный JS текст у меня вообще никак не выделяется. Может я не так создаю его? Как-то иначе создавать?

Я читал, что document.write - самый совместимый способ добавить что-то в документ, но как добавить именно в нужном месте при помощи document.write ?

  Ответить  
 
 автор: PAT   (24.04.2009 в 08:16)   письмо автору
 
   для: Eugene77   (23.04.2009 в 20:43)
 

<span onmouseover="this.innerHTML = 'New text.'">Initial text</span>
Без выделения, но кроссбраузерно.

  Ответить  
 
 автор: Eugene77   (24.04.2009 в 08:30)   письмо автору
 
   для: PAT   (24.04.2009 в 08:16)
 

Не работает.
То есть текст, конечно, меняется, но выделить новый текст мышкой нельзя.
Я в нескольких версиях Оперы пробовал

  Ответить  
 
 автор: PAT   (24.04.2009 в 08:41)   письмо автору
 
   для: Eugene77   (24.04.2009 в 08:30)
 

Опера - самый кривой браузер из всех существующих.
В каких-то её версиях - работает, в других - не работает.
Здесь именно это (innerHTML в Опере) - уже обсуждалось

UPDATE: хотя сейчас посмотрел - и в IE выделить новый текст МОЖНО, а вот кликнуть потом по "Копировать" в контекстном меню - НЕЛЬЗЯ. Но для IE это "лечится":
<span onmouseover="if (this.innerHTML != 'New text') this.innerHTML = 'New text'">Initial text</span>
Проверьте в вашей Опере. В моей - версия 9.52 - работает.

UPDATE2: увидел сейчас ваш вопрос о document.write.
Отвечаю - метод этот можно использовать только при инициализации (формировании) документа. Применение document.write на уже сформированной странице приводит к ПОЛНОМУ переписыванию документа (грубо говоря - исчезнет ВСЁ, что было прописано между <html> и </html> и появится только то, что внутри скобок этого метода прописано).
Поэтому использовать его в качестве средства динамического изменения какой-то части существующей страницы просто НЕЛЬЗЯ.

  Ответить  
 
 автор: Eugene77   (24.04.2009 в 16:01)   письмо автору
 
   для: PAT   (24.04.2009 в 08:41)
 

СУПЕР!
В разных версиях Оперы работает!

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

  Ответить  
 
 автор: PAT   (24.04.2009 в 17:44)   письмо автору
 
   для: Eugene77   (24.04.2009 в 16:01)
 

onmouseover="var a = 'New text'; if (this.innerHTML != a) this.innerHTML = a"

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

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