简体   繁体   中英

How to print a javascript array values in a jQuery .html() function?

I have a JavaScript array that contains a set of strings. I want to display them in a HTML div element by line by line using j Query or JavaScript.

My code is up to now:

var data = data;
for (i = 1; i <= data.length; i++) {

  data[i] = data[i] + '<br />';

  $(target).html('<a>'+data[i]+'</a>');
}

My data is displayed in this moment right now.

Labelling MachinesLabels - Plastic, Metal, Foil etcLabels FabricLaboratories - MedicalLaboratories - TestingLaboratory Equipment & SuppliesLaboratory Equipment Services & Calibration

I want them displayed like this as links (inside tags):

Labelling Machines
Labels - Plastic, Metal, Foil etc
Labels Fabric
Laboratories - MedicalLaboratories - Testing
Laboratory Equipment & Supplies
Laboratory Equipment Services & Calibration

Thanks in advance

You should add the breaks outside of the link tags and use .html() only once, as it completely replaces the innerHTML of the given element, ie

str = "";
for (i = 1; i <= data.length; i++) {
    str += "<a>" + data[i] + "</a><br />";
}
$(target).html(str);

I would suggest another approach, to use innerHTML (javascript) or append (jquery) as another answer has already mentioned

for (i = 1; i <= data.length; i++) {
    target.innerHTML += "<a>" + data[i] + "</a><br />";
}
var data = data;
var str = '';
for (var i = 1; i <= data.length; i++) {

  str += `<a>${data[i]}<br /></a>`;

}
$(target).html(str);

Try this.

The cleanest way will be wrapped in a div. And you need to use .append() method to not override the initial data that is already added to the target.

 var data = ["Hello", "World", "Lorem", "Ipsum", "More length"]; for (var i = 0; i < data.length; i++) { $("#result").append('<div><a href="#" class="link">' + data[i] + '</a></div>'); } 
 .link { color: #5ca5cc; margin-bottom: 10px; text-decoration: none; } 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div id="result"></div> 

Clean and more simple code along with working demo.

Your code is incomplete here.Not sure if you have declare variable i anywhere in code.Also you are starting to loop from 1st index

Instead of appending to DOM on every iteration,create a string and concat the value to it. Append it on completion of the iteration.

var data = data,
htmlString="";
for (var i = 0; i <= data.length; i++) {
htmlString+= data[i] + '<br />';
}
$(target).append(htmlString);

Instead of a for/loop you could use ES6 in one line with map and a template literal .

$(target).html(arr.map(el => `<a>${el}</a><br/>`));

DEMO

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM