Autor Zpráva
Dedusko
Profil
Dobrý deň,
chcel by som vás požiadať o radu, kde robím chybu. V scripte prijímam XML dáta. Zoznam užívateľov na chate chcem doplniť o link, kedy po kliknutí na užívateľa
v zozname skopíruje jeho Username do políčka "txt_message". Dookola mi však kopíruje iba naposledy načítaného užívateľa a neviem si s tým už rady. Ďakujem
za každú reakciu. V JS som začiatočník.

function nacitajUsers() {
if (receiveReq.readyState == 4) {
var users_div = document.getElementById('div_users');
var users_xmldoc = receiveReq.responseXML;
var users_nodes = users_xmldoc.getElementsByTagName("users"); 
var users_n_messages = users_nodes.length;
users_div.innerHTML = '';
for (ii = 0; ii < users_n_messages; ii++) {
var user_node = users_nodes[ii].getElementsByTagName("username");
var userr_fb_id_node = users_nodes[ii].getElementsByTagName("userr_fb_id");

Tu následne generujem Username do zoznamu s odkazom.

nickName=user_node[0].firstChild.nodeValue;
users_div.innerHTML += '<div class="user"><img src="pic/fb_pic/' +
userr_fb_id_node[0].firstChild.nodeValue + '.jpg"  width="15"
height="15">
' + '<a href="#" onclick="javascript:userSelect(' + "nickName" +
');return false;">' + nickName + '</a></div>';

Pokračovanie scriptu

users_div.scrollTop = users_div.scrollHeight;
}
users_div.innerHTML += '<hr size="1" noshade><span class="seda"
align="center">OnLine: ' + users_n_messages + '</span>';
}
}

function userSelect(vyberUsera){
vyberUsera=document.getElementById('txt_message').value=vyberUsera + "»";
return vyberUsera;
}
Keeehi
Profil
Vynechej uvozovky kolem nickName na 5. řádku stejně jako jsou vynechané na 6. řádku.
Dedusko
Profil
Keeehi:

Skúsil som to. Script prestal pracovať a vyhadzuje v konzole chybu "Názov užívateľského mena" is not defined.

Ak máš chuť si to pozrieť. Link na chat je http://hobobo.tk/, je potrebné mať FB účet, prihlasovanie je cez FB API.
peta
Profil
Dedusko: Tam bych teda vubec nechodil. kdo vi, jestli je to fb api nebo se to jen tak tvari a zapisuje hesla pro fb do databaze :)

nickName = user_node[0].firstChild.nodeValue;

users_div.innerHTML += 
'<div class="user"><img src="pic/fb_pic/' +
userr_fb_id_node[0].firstChild.nodeValue + '.jpg"  width="15"
height="15">
' + '<a href="#" onclick="javascript:userSelect(' + "nickName" +
');return false;">' + nickName + '</a></div>';
To vyznacene jsou stringy v puvodnim kodu. To sikno je ale take string, ne promenna. Ty uvozovky totiz maji byt uplne nekde jinde :)
Edit: Ok, tak ta neni sikmo, ale jakymsi bilym pozadim :)
Dedusko
Profil
S tým odchytávaním hesiel to beriem ako kompliment :D

Prepísal som to ako string, ale je to to isté, bez zmeny. Skúšal som to aj s podmienkou a cyklom, kde som zakaždým vyčistil "nickName" ale bez úspechu. Ako keby "innerHTML" pracovalo asynchrónne, nechápem to a už som z toho jeleň :/
peta
Profil
Tak pouzij prepisovani pomoci replace, kdyz to neumis napsat bez uvozovek.
nickName = 'Dedusko';
str = 'aaa %nick% bbb';
str = str.replace('%nick%',nickName); // hlavne tu nepis "nickName" (s uvozovkami), protoze pak to neobarvi zelene jako promennou, ale cervene jako string
alert(str);
users_div.innerHTML = str + users_div.innerHTML;
Dedusko
Profil
Aj bez úvodzoviek je to to isté. Vždy do vygenerovaného odkazu vloží ako "nickName" posledného užívateľa v abecednom poradí tak, ako idú z XML dokumentu. Ako "nickName" v tej chvíli vkladám ten istý string do odkazu a zároveň aj do názvu odkazu, takže by mali byť identické, ale nie sú ... nechápem to :/
Keeehi
Profil
Asi to bude chtít odkaz na živou ukázku.
Dedusko
Profil
Keeehi:

http://www.3xe.sk/fb_chat/
Keeehi
Profil
Facebook nemám. (čti: mám, ale nebudu se s ním nikam přihlašovat) Takže nějaká ukázka bez nutného přihlašování by nebyla?
Dedusko
Profil
Je to zmenené, nevyžaduje to žiadne FB API. http://www.3xe.sk/fb_chat/
Keeehi
Profil
users_div.innerHTML += '<div class="user"><img src="pic/fb_pic/' + userr_fb_id_node[0].firstChild.nodeValue + '.jpg" width="15" height="15">' + ' - <a href="#" onclick="javascript:userSelect(nickName);return false;">' + nickName + '</a></div>';
>>>
users_div.innerHTML += '<div class="user"><img src="pic/fb_pic/' + userr_fb_id_node[0].firstChild.nodeValue + '.jpg" width="15" height="15">' + ' - <a href="#" onclick="javascript:userSelect(\''+nickName+'\');return false;">' + nickName + '</a></div>';

a ještě
function userSelect(vyberUsera){
   document.getElementById('txt_message').value=vyberUsera + " » ";
}
Dedusko
Profil
Keeehi:

Ďakujem veľmi pekne. Problém je vyriešný.


Vraciam chat naspäť cez FB API.

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: