Problema javascript rating
Discutii si intrebari legate de scripturi si functii JavaScript, jQuery si Ajax, cod JavaScript in general.
-
GarryOne
- Mesaje: 27
Problema javascript rating
Acesta este link-ul cu problema:
URL:
scantodefend.com/muller008/testimonials.html
Acesta este codul javascript:
Cod: Selectaţi tot
var sMax;
var holder;
var preSet;
var rated;
function rating(num){
sMax = 0;
for(n=0; n<num.parentNode.childNodes.length; n++){
if(num.parentNode.childNodes[n].nodeName == "A"){
sMax++;
}
}
if(!rated){
s = num.id.replace("_", ''); // Get the selected star
a = 0;
for(i=1; i<=sMax; i++){
if(i<=s){
document.getElementsByClassName("_"+i).className = "on";
document.getElementsByClassName("rateStatus").innerHTML = num.title;
holder = a+1;
a++;
}else{
document.getElementsByClassName("_"+i).className = "";
}
}
}
}
function off(me){
if(!rated){
if(!preSet){
for(i=1; i<=sMax; i++){
document.getElementsByClassName("_"+i).className = "";
document.getElementsByClassName("rateStatus").innerHTML = me.parentNode.title;
}
}else{
rating(preSet);
document.getElementsByClassName("rateStatus").innerHTML = document.getElementsByClassName("ratingSaved").innerHTML;
}
}
}
function rateIt(me){
if(!rated){
document.getElementsByClassName("rateStatus").innerHTML = document.getElementsByClassName("ratingSaved").innerHTML + me.title;
preSet = me;
rated=1;
rating(me);
}
}
Acesta este codul html;
Cod: Selectaţi tot
<span class="rateStatus"></span>
<span class="ratingSaved"></span>
<div class="rateMe">
<a onclick="rateIt(this)" class="_1" onmouseover="rating(this)" onmouseout="off(this)"></a>
<a onclick="rateIt(this)" class="_2" onmouseover="rating(this)" onmouseout="off(this)"></a>
<a onclick="rateIt(this)" class="_3" onmouseover="rating(this)" onmouseout="off(this)"></a>
<a onclick="rateIt(this)" class="_4" onmouseover="rating(this)" onmouseout="off(this)"></a>
<a onclick="rateIt(this)" class="_5" onmouseover="rating(this)" onmouseout="off(this)"></a>
</div>
Scriptul initial lucra cu id-uri, dar mie imi trebuie pentru mai multe posturi, deci am incercat sa-l fac sa lucreze cu clase, dar nu mi-a reusit. Ma puteti ajuta va rog.
MarPlo
Mesaje: 4343
Salut
Din ce vad in script, e gresit folosita metoda
getElementsByClassName(). Aceasta returneaza un set de elemente care au acea classa, adica un array cu acele elemente.
Nu merge:
Cod: Selectaţi tot
document.getElementsByClassName("rateStatus").innerHTML
Deoarece "
document.getElementsByClassName("rateStatus") " contine un array cu elementele ce au
class="rateStatus", si la array nu se aplica
innerHTML .
Merge ceva de genul:
Cod: Selectaţi tot
document.getElementsByClassName("rateStatus")[i].innerHTML
- Unde " i " e numarul de ordine /indexul.
Ar trebui refacut tot script-ul. De folos e sa folosesti Addon-ul Firebug in Mozila Firefox, iti indica erorile din codul JavaScript.
- Sau poti folosi script-ul de aici:
Script notare /rating cu stelute.
Subiecte similare
-
Problemă cu 'this' în function.call() în JavaScript
JavaScript - jQuery - Ajax
Primul mesaj
De ce function.call() se comportă diferit cu ' this ' cand nu e adaugat ca argument, în JavaScript?
Rezultatul cu 'this' în test.call() este același...
Ultimul mesaj
Functia call() necesita primul argument, care e pentru obiectul 'this', daca nu ai nevoie de el, adauga null .
test.call(null, ...args);
In...
-
Lungime obiect JSON in JavaScript
JavaScript - jQuery - Ajax
Primul mesaj
Am convertit un tabel din baze de date într-un obiect JSON.
Aceasta este, în esență, un array bidimensional, fiecare înregistrare fiind pe cate un...
Ultimul mesaj
Poti sa folosesti Object.keys pentru a obține lista de chei din obiect ca un array, apoi obții cu 'length' lungimea din el:...
-
Produsul Dot a doua array in Javascript
JavaScript - jQuery - Ajax
Primul mesaj
Cum se poate implementa eficient o metoda dotProduct (pentru a obține produsul Dot din două array) fără a importa alte biblioteci Javascript?
De...
Ultimul mesaj
Iată o metodă.
Se foloseste funcția map() pentru a crea un nou array cu rezultate înmulțite ale fiecărui index, apoi se aplica funcția reduce()...
-
Adaugare apostrof la value in input cu JavaScript
JavaScript - jQuery - Ajax
Primul mesaj
Am un cod JavaScript care adaugă un câmp input pentru utilizator:
var user = O'Conner, John ;
b.innerHTML += <input type='hidden' value=' +...
Ultimul mesaj
Poți să înlocuiesti caracterul cu entitatea lui HTML.
Astfel, pentru apostrof (') poate fi ’ sau ‘
var user = O'Conner,...
-
Afisare cu animatie continut adaugat cu JavaScript
JavaScript - jQuery - Ajax
Primul mesaj
Ideea pe care vreau sa o fac e că la clic pe un buton, conținutul vechi e înlocuit cu nou conținut HTML adăugat cu javascript.
Vreau ca noul...
Ultimul mesaj
Pentru a declanșa o tranziție CSS, modifica starea CSS după ce ai introdus codul HTML. Poți face asta schimbând o clasă (la container sau la un...
-
Sare peste index-uri in bucla for…of in Javascript
JavaScript - jQuery - Ajax
Primul mesaj
In vechea bucla for() in JavaScript, ca sa sar peste index-uri faceam asa:
for (let i=0; i<bla.length; i+=2){
//...
}
Astfel, pentru...
Ultimul mesaj
Poti sa adaugi o conditie if() in bucla for…of, ca in urmatorul exemplu (indexul initial e pastrat).
for (const of bla.entries()) {
if (!(i %...