2011-10-26 8 views
10

Zasadniczo muszę przekonwertować ciągJak dołączyć tekst do wszystkich wartości javascript Array

"23423,1616,3461743,1345" 

na ciąg

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

Do tej pory próbowałem:

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(",", "") 

Ale to powoduje awarię mojej przeglądarki. Ma to sens:/

Odpowiedz

3

Musisz się upewnić, że zamknąłeś swój tag graficzny. Kolejną rzeczą, która może powodować problem, jest to, że i jest niezdefiniowany. Czy przeglądarka wyświetla komunikat o błędzie?

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

Dziękujemy! : :) – TaylorMac

+3

Znacznik końcowy dla elementów graficznych jest zabroniony. – Quentin

1

W kodzie HTML nie ma tagu </img>, więc nie jest to konieczne.

W przypadku PhotoArray[i] = "<img src='"+PhotoArray[i]+"</img>"; nie kończysz znacznika obrazu, to spowoduje powstanie <img src='1616</img>, dlatego daje dziwne wyniki. Zamiast tego spróbuj PhotoArray[i] = "<img src='"+PhotoArray[i]+"'>";.

+0

prawo, zmienił jednak nadal rozbił przeglądarce:/ – TaylorMac

+0

Jak? Jaka przeglądarka? Czy możesz umieścić repro na jsfiddle, żebyśmy mogli zobaczyć? – mikel

0

Oprócz tego, co @mikel mówi -

Używasz tej samej zmiennej, i, jako indeksu do JSONeventobject.Events i jako indeksu do PhotoArray. Nie widząc reszty kodu, nie wiem, czy to będzie problem, ale warto to sprawdzić.

Ponadto, zamiast konwersji do tablicy i do tyłu, wydaje się prostsze po prostu napisać:

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

(czyli wymienić wszystkie przecinki z '/><img src=', prefiks pierwszy element na <img src=' i dołącz ostatni element '/>).

0

jest zmienną 'i' zadeklarowanej jako var?

1

Jeśli nie chcesz korzystać z pętli (i nie chcę używać pętlę), można to zrobić:

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

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

console.log(str); 

co robi jest dodanie przecinka po obu stronach listę, dzieląc łańcuch na tablicę w oparciu o te przecinki, a następnie dodając znaczniki img po obu stronach z połączeniem, dzieląc ponownie na podstawie polecenia między otwierającym tagiem img a zamykającym znacznikiem img, który właśnie wstawiamy, wypalając pierwszy i ostatnie elementy w tablicy, a następnie ostatecznie łącząc je wszystkie z powrotem w jeden ciąg.

Wyjście konsola jest:

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

Nic takiego brzydkiego rozwiązania jednego wiersza!

14

Kilka strasznych odpowiedzi tutaj. Spróbuj:

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

podziału funkcji dzieli ciąg do tablicy opartej na separatorze dajemy.limit jest opcjonalny.

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

funkcja map zwraca nową tablicę że powstaje od wyniku wywołującego „callback” funkcję dla każdego elementu w „arr”. thisArg jest opcjonalne.

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

funkcji przyłączenia łączy wszystkie elementy tablicy, do łańcucha. limit jest opcjonalny.

Więc odpowiedź brzmi:

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

Źródła: 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