2011-10-26 19 views
10

Fondamentalmente, ho bisogno di convertire una stringaCome aggiungere testo a tutti i valori di javascript Array

"23423,1616,3461743,1345" 

in una stringa

"<img src='23423'></img><img src='1616'></img><img src='3461743'></img><img src='1345'></img> 

Finora ho provato:

var PhotoArray=JSONeventobject.Events[i].FileNameArray.split(","); // Just convert this string to array 

    for (i = 0; i < PhotoArray.length; i++) { 
     PhotoArray[i] = "<img src='"+PhotoArray[i]+"</img>"; 
    } 


      var Photostring = PhotoArray.toString().replace(",", "") 

Ma questo causa il crash del mio browser. Ha senso per me:/

risposta

3

È necessario assicurarsi di chiudere il tag immagine. Un'altra cosa che può causare il problema è che i non è definito. Il tuo browser fornisce un messaggio di errore?

var str = "23423,1616,3461743,1345"; 
var PhotoArray = str.split(","); 
for (var i = 0; i < PhotoArray.length; i++) { 
    PhotoArray[i] = "<img src=\"" + PhotoArray[i] + "\"></img>"; 
} 
str = PhotoArray.join(""); 
+0

Grazie !!! : :) – TaylorMac

+3

Il tag di chiusura per gli elementi dell'immagine è vietato. – Quentin

1

Non c'è un tag </img> in HTML, quindi non è necessario.

In PhotoArray[i] = "<img src='"+PhotoArray[i]+"</img>"; non stai terminando il tag immagine, questo produrrà <img src='1616</img> ed è per questo che dà strani risultati. Prova invece a PhotoArray[i] = "<img src='"+PhotoArray[i]+"'>";.

+0

destra, cambiato ma questo ancora si è schiantato il browser:/ – TaylorMac

+0

Come? Quale browser? Puoi inserire una riproduzione su jsfiddle in modo che possiamo vedere? – mikel

0

In aggiunta a quanto @mikel dice -

State usando la stessa variabile, i, come l'indice in JSONeventobject.Events e come indice in PhotoArray. Senza vedere il resto del codice, non so se questo sarà un problema, ma vale la pena controllare.

Inoltre, piuttosto che la conversione in un array e indietro, sembra più semplice di scrivere solo:

var Photostring = "<img src='" + JSONeventobject.Events[i].FileNameArray.replace(/,/g, "'/><img src='") + "'/>"; 

(cioè, sostituire tutte le virgole con '/><img src=', anteporre il primo elemento del <img src=', e aggiungere l'ultimo elemento '/>).

0

è la variabile 'i' dichiarata come var?

1

Se non si desidera utilizzare un ciclo (e io non volevo utilizzare un ciclo), si potrebbe fare questo:

var str = "23423,1616,3461743,1345"; 

str = ("," + str + ",").split(',').join("'></img>,<img src='").split(",").slice(1,-1).join(''); 

console.log(str); 

quello che sta facendo è l'aggiunta di una virgola su entrambi i lati la lista, dividendo la stringa in un array basato su quelle virgole, quindi aggiungendo i tag img su entrambi i lati con la chiamata join, dividendo di nuovo in base al comando tra l'apertura del tag img e la chiusura del tag img che abbiamo appena inserito, masterizzando il primo e ultimi elementi nell'array e infine unendoli tutti insieme in un'unica stringa.

L'uscita della console è:

<img src='23423'></img><imgsrc='1616'></img><img src='3461743'></img><img src='1345'></img> 

Niente come una soluzione di una riga brutto!

14

Alcune risposte terribili qui. Prova:

"1,2,3,4".split(",").map(function(a) { return "<foo>" + a + "</foo>"; }).join(""); 
0
#1 str.split([separator[, limit]]) 

funzione split divide una stringa in un array basato su separatore diamo.il limite è facoltativo.

#2 arr.map(callback[, thisArg]) 

mappa funzione rendimenti nuova matrice che si forma dal risultato di chiamata "callback" funzione per ogni elemento in "arr". thisArg è opzionale.

#1 str.split([separator[, limit]]) 

funzione aderire unisce tutti gli elementi di una matrice, in una stringa. il limite è facoltativo.

Quindi, la risposta è:

var photoString = "23423,1616,3461743,1345"; 
var photoArray = str.split(",").map(
    function(a) { 
     return '<img src="' + a + '"></img>'; 
    } 
).join(""); 

Fonti: https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/String/split https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/map https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/join

Problemi correlati