Home > other >  Get attribute from HTML string (without jQuery)
Get attribute from HTML string (without jQuery)

Time:03-14

I'm trying to extract an image attribute from a HTML that's pulled in as a String.

Attempting to use https://stackoverflow.com/a/40311944/2981404 returns:

TypeError: Cannot read properties of undefined (reading 'slice')

My code is as follows:

const html[0] = '<img src="/img/image-example.png"  title="What Im looking for..." alt="This is an example image">'
const startFromTitle = html[0].slice(
  html[0].search('title')
)
const title = startFromTitle.slice(5, startFromTitle.search(' ') - 1)
console.log(title) // expected "What Im looking for..."

I'd love to use jQuery, but on this project, I can't.

CodePudding user response:

You can achieve this by creating a temporary div element in DOM :

const htmlStr = '<img src="/img/image-example.png"  title="What Im looking for..." alt="This is an example image">';

var tmpDiv = document.createElement('div');
tmpDiv.innerHTML = htmlStr;

console.log(tmpDiv.querySelector('.image').getAttribute('title'));

CodePudding user response:

You must declare html as const first and then assign the html string to html[0].

And then you can remove title=" from the string (withoutTitle) and then search for '"' to find the end of the attribute.

const html = [];

html[0] = '<img src="/img/image-example.png"  title="What Im looking for..." alt="This is an example image">';

const startFromTitle = html[0].slice(
  html[0].search('title')
);

const withoutTitle = startFromTitle.slice(
  7
);

const title = withoutTitle.slice(0, withoutTitle.search('"'));

console.log(title);

  • Related