简体   繁体   中英

JQuery how get css property from HTML string

I get a jQuery object from an HTML string, then I loop through the elements and try to get their CSS property, but in return I get an empty string.

var htmlStr = '<p style="text-align: left;">This first string</p>';
htmlStr += '<p style="text-align: center;">This second string</p>';
htmlStr += '<p style="text-align: right;">This third string</p>';
var itemsContent = $(htmlStr);
for (let i = 0; i < itemsContent.length; ++i)
{
    let align = itemsContent.eq(i).css("text-align");
    ...
}

variable align allways empty. Please tell me what am I doing wrong?

You could just call Parser#parseFromString and iterate over p elements finding who has text-align :

let parser = new DOMParser()
let domDocument = parser.parseFromString(htmlStr, 'text/html')
let elements = [].slice.call(domDocument.querySelectorAll('p'))

elements.filter(e => e.style.textAlign)

Your code works fine. Take note of the console.log and comment.

var htmlStr = '<p style="text-align: left;">This first string</p>';
    htmlStr += '<p style="text-align: center;">This second string</p>';
    htmlStr += '<p style="text-align: right;">This third string</p>';
var itemsContent = $(htmlStr);
for (let i = 0; i < itemsContent.length; ++i) {
  let align = itemsContent.eq(i).css("text-align");
  console.log(align); // you can call a function here or re-asign the variable.
}

Your code should work just fine, but just incase i rewrote it with test

 var htmlStr = '<p style="text-align: left;">This first string</p>'; htmlStr += '<p style="text-align: center;">This second string</p>'; htmlStr += '<p style="text-align: right;">This third string</p>'; $(htmlStr).each(function(){ var align = this.style.textAlign; console.log(align); }); 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> 

try this

var htmlStr = '<p style="text-align: left;">This first string</p>';
htmlStr += '<p style="text-align: center;">This second string</p>';
htmlStr += '<p style="text-align: right;">This third string</p>';
var itemsContent = $(htmlStr);
i=0;
for (let i = 0; i < itemsContent.length; ++i)

{
    let align = itemsContent.eq(i).css("text-align");
}

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