Показать сообщение отдельно
  #7 (permalink)  
Старый 17.03.2015, 09:33
Интересующийся
Отправить личное сообщение для arcmag Посмотреть профиль Найти все сообщения от arcmag
 
Регистрация: 06.02.2015
Сообщений: 29

Можете поможете еще разок?
Данный пример с заменой тега текстом мне нужен был для написания программы поиска и выделения совпадений в тексте, то есть имеется поле ввода, и все что в него введено будет выделяться на странице красным цветом.
Вот код всей страницы
<!DOCTYPE html>
<html>
<head>
<title>Поисковик</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<style>
.wrapper{
	margin:10px auto;
	width:880px;
	border:solid 1px #999999;
	background:#FFF;
	padding:35px 7px;
	position:relative;
}
.wrapper input[type="text"]{
	text-align:center;
	position:absolute;
	width:95%;
	margin:0px auto;
	left:5px;
	top:5px;
	right:5px;	
	padding:5px 10px;
	border:solid 1px #CCCCCC;
	outline:0px;
	background:#FC6;
	transition:all .3s;
}
.wrapper input[type="text"]:focus{box-shadow:inset 0px 0px 3px #000000;}
.edit{color:red;}
</style>
<script type="text/javascript">
var span,container;
window.onload = function(){
	span = document.querySelectorAll('.edit');
	container = document.getElementsByClassName("page")[0];
	document.getElementById("myTest").addEventListener("keyup",testRxp);
}
function testRxp(e){
	var myTextSearch = this.value;
	for (var i=0; i<span.length; i++){
		txt = document.createTextNode(span[i].textContent);
		if(txt=="") continue;
		container.replaceChild(txt, span[i]);
	}//удаляем все теги
	if(/^\s$|^$/.test(myTextSearch)) return; // если строка пустая или начинается с пробела прервать функцию
	var regexp = new RegExp(myTextSearch,"g");
	container.innerHTML = container.textContent.replace(regexp,"<span class='edit'>"+myTextSearch+"</span>");
	//заново выделяем все найденные совпадения
	span = document.querySelectorAll('.edit');
	for(var i=0; i<span.length; i++){
		if(span[i].textContent=="") span[i].parentNode.removeChild(span[i]);
	}//удаляем все оставшиеся пустые теги
}
function isUpper(str){
    if (str == str.toUpperCase()) return true; 
    else return false; 
}
</script>
</head>
<body>
<div class="wrapper">
    <input type="text" id="myTest" placeholder="Поиск совпадений">
    <div class="page">
Россия (от греч. Ρωσία — Русь; официально Росси́йская Федера́ция или Росси́я, на практике используется также сокращение РФ) — государство в Восточной Европе и Северной Азии. Население — 146 270 033 чел. (2015), территория — 17 125 187 км². Занимает первое место в мире по территории и девятое место по численности населения.
Столица — Москва. Государственный язык — русский.<br>
Смешанная республика федеративного устройства. В мае 2012 года пост президента занял Владимир Путин, председателя правительства — Дмитрий Медведев.<br>
В составе Российской Федерации находятся 85 субъектов, 46 из которых именуются областями, 22 — республиками, 9 — краями, 3 — городами федерального значения, 4 — автономными округами и 1 — автономной областью.<br>
Россия граничит с девятнадцатью странами (самый большой показатель в мире), включая две частично признанных, из них по суше со следующими государствами: Норвегией, Финляндией, Эстонией, Латвией, Литвой, Польшей, Белоруссией, Украиной, Абхазией, Грузией, Южной Осетией, Азербайджаном, Казахстаном, КНР, КНДР, Монголией, по морю с Турцией, Японией и США.<br>
Отличается значительным этнокультурным разнообразием. Бо́льшая часть (около 75 %) населения относит себя к православию, что делает Россию страной с самым многочисленным православным населением в мире.<br>
По данным Всемирного банка, объём ВВП по ППС за 2014 год составил $3,461 трлн ($24,120 на человека). Денежная единица — российский рубль (усреднённый курс за 2014 год — 36 рублей за 1 доллар США).
</div>
</div>
</body>
</html>

Когда ввожу текст в первый раз все работает, далее стираю текст и ввожу новый - ошибка
Ответить с цитированием