javascript Come restituire l'ID elemento anziché[object HTMLDivElement](Prototype.js)




dom prototypejs (4)

var ids = $$('div.basic').collect(function(el) { return el.id; }); //array of ids

alert(ids.join(','));

collect è un altro nome per la mappa , che consente di trasformare gli elementi di un tipo di raccolta in un altro tipo applicando una funzione di "selettore" a ciascuno.

So che è semplice, ma non riesco a capirlo. Attualmente il seguente codice restituisce "[object HTMLDivElement], [object HTMLDivElement]" Mi piacerebbe che restituisse "div1, div2". qualche idea? Grazie ragazzi.

<HTML>
<HEAD>
<script type="text/javascript" src="path_to/prototype.js"></script>
<script>
function linkClick ()
{
    alert($$('div.basic'));
}
</script>
</HEAD>
<BODY>
   <div id="div1" class="basic" onclick="linkClick();"></div>
   <div id="div2" class="basic" onclick="linkClick();"></div>
</BODY>
</HTML>

Answer #1

Ho avuto lo stesso problema, c'è una soluzione semplice:

Se varElement è il tuo oggetto che contiene un [HTMLDivElement] (o un altro oggetto DOM), semplicemente aggiungi ".id"

per esempio

varElement.id 

Answer #2

C'è un ottimizzazione in prototipo appositamente per questo:

$$('div.basic').pluck('id')

Se leggo correttamente la tua domanda, vuoi una lista di ID div, piuttosto che una stringa di ID separati da una virgola.


Answer #3
alert($$('div.basic').invoke('identify').join(',');

Il richiamo chiamerà una funzione per nome. La funzione di identificazione fornirà l'id. Quando viene chiamato su un array, restituisce un array dei loro id. Unisci li trasforma in una stringa con le virgole in mezzo.







prototypejs