Autor Zpráva
Martin
Profil
Ahoj, nějak bych potřeboval navést.
Chtěl bych udělat stejnou věc jako je na tomto webu. Budu to dělat tady http://www.resslovaci.net/test/index.php?co=gb . Když uživatel klikne na přezdívku toho kdo přispíval, tak se do textarea vloží ta přezdívka. Dá se tu uděla tak, abych vůbec nemusel zasahovat do html kódu? Aby tam nemuselo být u každého toho nicku ... < onclick...
? Díky
Leo
Profil
Ovladac udalosti (treba onclick) se DA pripojit k vybranym elementum na strance primo z JS, nemusi byt jako atribut v html, najdete tady v minulych dotazech radu prikladu. Leo
Oswald
Profil
Pokud budou všechna jména např. ve strong a budou mít třídu "jmeno", tak by to šlo nějak takhle:


function replyInit()
{

var area = document.getElementById('IDECKO_TEXTAREI_PRO_VZKAZ')
var strongs = document.getElementsByTagName('strong');

for (var i=0; i < strongs.length; i++)
{
if (strongs[i].className == 'jmeno')
strongs[i].onclick = function() {area.value += '\n[b_]' + this.firstChild.data + '[/b_]'}

}

}

window.onload = replyInit;


Psáno z hlavy, takže tam je možná nějaká chybka.
Martin
Profil
Všem zatim díky, nevíte jestli existuje něco jako tohle? document.getElementByName('zprava'); Kde se to dá zjistit? Zkoušel jsem hledat tady http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/def-index.html ale zatim se v tom moc neorijentuju. Díky
Oswald
Profil
document.getElementByName('zprava') ne, ale document.getElementsByName('zprava') existuje a vrací pole (nodeList) s nalezenýma elementama.
Martin
Profil
Myslim, že by to šlo udělat i jednodušeji :)
Ale zatim se mi nedaří rozchodit ani tohle. Můžete prosim někdo na to mrknout?
http://www.resslovaci.net/test/js.js
Oswald
Profil
Byla tam chyba - proměnná area byla lokální ve funkci. Tady to je funkční:


<html>
<head>
<script type="text/javascript" >
function reply()
{
var strongs = document.getElementsByTagName('strong');

for (var i=0; i < strongs.length; i++)
{
if (strongs[i].className == 'jmeno')
{
strongs[i].onclick = function()
{
document.getElementById('t').value += '\n[_b]' + this.firstChild.data + '[/_b]';
}
}
}
}

window.onload = reply;
</script>
</head>
<body>
<p>
<strong class="jmeno">Jakub</strong><br />
<strong class="jmeno">Petr</strong><br />
<strong class="jmeno">Martin</strong><br />
<strong class="jmeno">Honza</strong><br />
<strong>bold text</strong><br />
</p>


<textarea name="a" id="t" cols="40" rows="20"></textarea>

</body>
</html>
Martin
Profil
Díky, už v tom mám jasno. Ale ještě mám jeden dotaz. Když mám
<span>host:<strong>Martin</stronf></span>
Jak z toho span pomocí JS dostanu host:Martin ?
Díky
Oswald
Profil
span.getElementsByTagName('strong')[0].firstChild.data
Martin
Profil
Hmm... nějak mi to nejde
<span class="username">Host: <strong>Test</strong></span>

function reply() {
var usernames = document.getElementsByTagName('span');

for (var i=0; i < usernames.length; i++)
{
if (usernames[i].className == 'username')
{
usernames[i].onclick = function()
{
var area = document.getElementById('zprava');
if(area.value) {
area.value += '\n<b>' + this.firstChild.data + '</b>';
}
else {
area.value += '<b>' + this.firstChild.data + '</b>';


}
}

}

}
}
window.onload = reply;

Takle jsem si to "upravil" . Zkoušel jsem něco jako usernames[i].getElementsByTagName('strong')[0].firstChild.data , ale nějak ty data pořád nemůžu z toho dostat.
Fred
Profil
this.childNodes[1].childNodes[0].nodeValue
Toto téma je uzamčeno. Odpověď nelze zaslat.