简体   繁体   English

jQuery如何从HTML字符串获取css属性

[英]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. 我从HTML字符串中获取一个jQuery对象,然后遍历元素并尝试获取其CSS属性,但作为回报,我得到了一个空字符串。

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. 变量始终align空。 Please tell me what am I doing wrong? 请告诉我我做错了什么?

You could just call Parser#parseFromString and iterate over p elements finding who has text-align : 您可以只调用Parser#parseFromString并遍历p元素以查找谁具有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. 记下console.log并进行注释。

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");
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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