Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Замена текста при наведении (https://javascript.ru/forum/misc/37710-zamena-teksta-pri-navedenii.html)

Sirius-jack 03.05.2013 17:09

Замена текста при наведении
 
Добрый вечер!
Простите, если вопрос глупый, но всё-же: нужно сделать замену текста ссылки при наведении.
С одной ссылкой проблем нет (хотя я уверен, что есть вариант короче):
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>Шаблон</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<script type="text/javascript">
<!--
function f_over () {
document.getElementById ("div1").style.display = "none";
document.getElementById ("div2").style.display = "block";
}
function f_out () {
document.getElementById ("div1").style.display = "block";
document.getElementById ("div2").style.display = "none";
}
//-->
</script>
</head>
<body>
<div><div id="div1"><a href="link1.html" onmouseover="f_over ();">Первый текст</a></div>
<div id="div2"><a href="link2.html" onmouseout="f_out ();">Второй текст</a></div></div>
<script type="text/javascript">
<!--
document.getElementById ("div2").style.display = "none";
//-->
</script>
</body>
</html>

Но как быть, если ссылок много?

edison 03.05.2013 22:34

<a href="link1.html" onmouseout="this.href='link1.html';this.innerHTML='Первый текст';" onmouseover="this.href='link2.html';this.innerHTML='Второй текст';">Первый текст</a>


ну или вынести в функцию )
хмм, в примере почему-то 2 разные ссылки, а в задаче вроде ее не нужно менять, ну значит убрать this.href=хххх

ksa 04.05.2013 00:20

Цитата:

Сообщение от Sirius-jack
Но как быть, если ссылок много?

Как вариант использовать структуру ДОМ-модели...

<!DOCTYPE html>
<html>
<head>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<!--
<link rel="stylesheet" type="text/css" href="tmp.css" />
-->
<style type="text/css">
.off {
	display: none;
}
</style>
<script type="text/javascript">
$(document).ready(function (){
	$('#box > div:even').mouseover(function (){
		next(this);
	});
	$('#box > div:odd').mouseout(function (){
		next(this);
	});
});
function next(Obj) {
	var o=$(Obj)
	o.hide();
	o=o.next();
	o=(o.length>0)? o: $(Obj.parentNode).find('div:first');
	o.show();
	
}
</script>
</head>
<body>
<div id='box'>
	<div><a href="link1.html">текст 1</a></div>
	<div class='off'><a href="link1.html">текст 2</a></div>
	<div class='off'><a href="link1.html">текст 3</a></div>
	<div class='off'><a href="link1.html">текст 4</a></div>
	<div class='off'><a href="link1.html">текст 5</a></div>
	<div class='off'><a href="link2.html">текст N</a></div>
</div>
</body>
</html>

Это как иллюстрация идеи. :)

ruslan_mart 04.05.2013 05:16

<a href="/" name="Название при наведении 1">Ссылка 1</a>
<a href="/" name="Название при наведении 2">Ссылка 2</a>
<a href="/" name="Название при наведении 3">Ссылка 3</a>


function replaceText()
{
	var a = this, b = a.innerHTML;
	a.innerHTML = a.name;
	a.name = b;
}

window.onload = function()
{
	var a = document.getElementsByTagName('a'), b;
	for(i=0; i<a.length; i++) if(a[i].name)
	{
		a[i].onmouseover = replaceText;
		a[i].onmouseout = replaceText;
	}
}


В name пишем название, которое будет выводиться при наведении.


Часовой пояс GMT +3, время: 12:07.