Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 01.03.2015, 02:05
Новичок на форуме
Отправить личное сообщение для Olena Посмотреть профиль Найти все сообщения от Olena
 
Регистрация: 01.03.2015
Сообщений: 3

Как сделать? Выделение текста в div при нажатии на ссылку
Такая проблема, решить ее не могу(

Есть такой скрипт:
<!DOCTYPE HTML>
<html>
  <head> </head>
  <body>
<div class="example" style="border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight<5?this.style.height:scrollHeight>200?'200px':''+(this.scrollHeight+5)+'px');">
<!--this_code--> 
dsdsdsdsdjshdjshjkdhskjhdks<br>
dfdffffffffffffffffffffffffffffffffffffffffffffffff
<!--/this_code--> 
</div>


<script type="text/javascript">
$('div.example').click(function() {
 var e=this; 
 if(window.getSelection){ 
 var s=window.getSelection(); 
 if(s.setBaseAndExtent){ 
 s.setBaseAndExtent(e,0,e,e.innerText.length-1); 
 }else{ 
 var r=document.createRange(); 
 r.selectNodeContents(e); 
 s.removeAllRanges(); 
 s.addRange(r);} 
 }else if(document.getSelection){ 
 var s=document.getSelection(); 
 var r=document.createRange(); 
 r.selectNodeContents(e); 
 s.removeAllRanges(); 
 s.addRange(r); 
 }else if(document.selection){ 
 var r=document.body.createTextRange(); 
 r.moveToElementText(e); 
 r.select();}
});
</script>
  </body>
</html>


При клике на область div-a он выделяет ее.
Как сделать, что бы div выделялся при нажатии ссылки возле него?
Таких блоков может быть > 1 на одной странице.
Вот так как-то:
<a href="javascript://" onclick="select-example(this);return false;">Выделить всё</a>
<div class="example" style="border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight<5?this.style.height:scrollHeight>200?'200px':''+(this.scrollHeight+5)+'px');">
<!--this_code--> 
dsdsdsdsdjshdjshjkdhskjhdks<br>
dfdffffffffffffffffffffffffffffffffffffffffffffffff
<!--/this_code--> 
</div>
Ответить с цитированием
  #2 (permalink)  
Старый 01.03.2015, 02:07
Новичок на форуме
Отправить личное сообщение для Olena Посмотреть профиль Найти все сообщения от Olena
 
Регистрация: 01.03.2015
Сообщений: 3

И если можно что бы js был по проще...
Ответить с цитированием
  #3 (permalink)  
Старый 01.03.2015, 18:50
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Не знаю насколько кроссбраузерен код, вроде работает в последних версиях браузеров, а в IE - начиная с 9 версии:

Код проще некуда:
<script>
	function selectExample(link) {
		var example = link.nextElementSibling;
		var selection = window.getSelection();
		selection.selectAllChildren(example);
	}
</script>
<a href="javascript://" onclick="selectExample(this)">Выделить всё</a>
<div class="example" style="border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight<5?this.style.height:scrollHeight>200?'200px':''+(this.scrollHeight+5)+'px');">
<!--this_code-->
dsdsdsdsdjshdjshjkdhskjhdks<br>
dfdffffffffffffffffffffffffffffffffffffffffffffffff
<!--/this_code-->
</div>
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #4 (permalink)  
Старый 01.03.2015, 19:01
Новичок на форуме
Отправить личное сообщение для Olena Посмотреть профиль Найти все сообщения от Olena
 
Регистрация: 01.03.2015
Сообщений: 3

Спасибо большое!
Важна очень кроссбраузерность этого кода.
Пока попробую Ваш код на тест как пройдет, сама остановилась на этом решении:
<script type="text/javascript">  
function selectCode(a){  
var e=a.parentNode.parentNode.getElementsByTagName('code')[0];  
if(window.getSelection){  
var s=window.getSelection();  
if(s.setBaseAndExtent){  
s.setBaseAndExtent(e,0,e,e.innerText.length-1);  
}else{  
var r=document.createRange();  
r.selectNodeContents(e);  
s.removeAllRanges();  
s.addRange(r);}  
}else if(document.getSelection){  
var s=document.getSelection();  
var r=document.createRange();  
r.selectNodeContents(e);  
s.removeAllRanges();  
s.addRange(r);  
}else if(document.selection){  
var r=document.body.createTextRange();  
r.moveToElementText(e);  
r.select();}}  
</script>

Но здесь нужно что бы элементы для выделения были между тегом code.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Скрыть div при нажатии на картинку SLameN jQuery 6 14.04.2014 21:27
При нажатии на ссылку раскрываются все div anonimous jQuery 1 09.08.2012 14:49
Как сделать смену текста по клику на ссылку? goooooch Общие вопросы Javascript 4 09.07.2012 17:04
Как сделать так, чтобы JS при нажатии на кнопку не выполняла запрос со страницы. JSProgrammer Элементы интерфейса 3 18.05.2010 20:18
Подскажите как убрать часть текста при нажатии на кномпу или гиперссылку. potkin Общие вопросы Javascript 6 10.10.2008 07:55