简体   繁体   中英

How can I parse inner HTML by class name where html is assigned to a string variable in Angular 7/Typescript

How can I get the inner text of span by class name? Here adr_address variable is not a DOM element but a string.

var adr_address = '<span class="street-address">12 Stephenson Rd</span>, <span class="locality">Summertown</span>, <span class="region">TN</span> <span class="postal-code">38483-7005</span>, <span class="country-name">USA</span>';

var street-address = ??;
var locality = ??;
var region = ??;
var postal-code = ??;
var country-name = ??

console.log(street-address);
console.log(locality);
console.log(region);
console.log(postal-code);
console.log(country-name);

The output must be like this:

12 Stephenson Rd

Summertown

TX

38483-7005

USA

You can use DOM Parser

const parser = new DOMParser();
const doc = parser.parseFromString(htmlString, 'text/html');

__ now you can use query selectors on this doc __

You can use @ViewChild, for example:

html:

<span #st class="street-address">12 Stephenson Rd</span>

ts:

 @ViewChild('st') st;

 ngAfterViewInit(): void {
 console.log(this.st.nativeElement.innerHTML);

}

This worked for me finally:

var adr_address = '<span class="street-address">12 Stephenson Rd</span>, <span class="locality">Summertown</span>, <span class="region">TN</span> <span class="postal-code">38483-7005</span>, <span class="country-name">USA</span>';
const parser = new DOMParser();
const doc = parser.parseFromString(adr_address, 'text/html');

var locality = doc.getElementsByClassName('locality')[0].innerHTML.toString(); 
var street-address = doc.getElementsByClassName('street-address')[0].innerHTML.toString();
var region = doc.getElementsByClassName('region')[0].innerHTML.toString();
var postal-code = doc.getElementsByClassName('postal-code')[0].innerHTML.toString();

You can use Jquery and Javascript:

var elem=$.parseHTML('<span class="street-address">12 Stephenson Rd</span>, <span class="locality">Summertown</span>, <span class="region">TN</span> <span class="postal-code">38483-7005</span>, <span class="country-name">USA</span>')

$.map( elem, function( el,n ) {
 if($(el).context.localName == 'span')
 {
     console.log($($(el)[0]).text())

 }
});

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