Wie würde ich die background-image
URL eines <div>
Elements in JavaScript erhalten? Zum Beispiel habe ich Folgendes:
<div style="background-image:url('http://www.example.com/img.png');">...</div>
Wie würde ich nur die URL von bekommen background-image
?
javascript
css
celliott1997
quelle
quelle
bi = style.backgroundImage.slice(4, -1).replace(/"/g, "");
Und jetzt funktioniert es :)style.backgroundImage.slice(5, -2)
funktioniert natürlich auch.Um dies zu ergänzen, falls jemand eine ähnliche Idee hat, können Sie auch Regex verwenden:
var url = backgroundImage.match(/url\(["']?([^"']*)["']?\)/)[1];
Laut jsPerf: http://jsperf.com/match-vs-slice-and-replace scheint die Lösung von @ Praveen in Safari und Firefox tatsächlich eine bessere Leistung zu erzielen
Wenn Sie Fälle berücksichtigen möchten, in denen der Wert Anführungszeichen enthält, sich jedoch nicht sicher sind, ob es sich um ein doppeltes oder ein einfaches Anführungszeichen handelt, können Sie Folgendes tun:
var url = backgroundImage.slice(4, -1).replace(/["']/g, "");
quelle
|
ist in Ihrer Regex nicht erforderlich, das[...]
bedeutet, dass Zeichen darin enthalten sind.replace(/["']/g, "")
ist inZunächst müssen Sie Ihren Hintergrundbildinhalt zurückgeben:
var img = $('#your_div_id').css('background-image');
Dadurch wird die URL wie folgt zurückgegeben:
"url (' http://www.example.com/img.png ')"
Dann müssen Sie die unerwünschten Teile dieser URL entfernen:
img = img.replace(/(url\(|\)|")/g, '');
quelle
Versuche dies:
var url = document.getElementById("divID").style.backgroundImage; alert(url.substring(4, url.length-1));
Oder mit
replace
:url.replace('url(','').replace(')',''); // Or... backgroundImage.slice(4, -1).replace(/["']/g, "");
quelle
url(
. Die Anführungszeichen werden nicht entfernt. Das Ersetzen funktioniert nicht bei doppelten Anführungszeichen. Die Verwendung des Teilstrings und des Ersetzens ist in Ordnung, behandelt jedoch keine doppelten Anführungszeichen.backgroundImage.slice(4, -1).replace(/["']/g, "");
ist das, wonach Sie suchenconst regex = /background-image:url\(["']?([^"']*)["']?\)/gm; const str = `<div style="background-image:url('http://www.example.com/img.png');">...</div>`; let m; while ((m = regex.exec(str)) !== null) { // This is necessary to avoid infinite loops with zero-width matches if (m.index === regex.lastIndex) { regex.lastIndex++; } // The result can be accessed through the `m`-variable. m.forEach((match, groupIndex) => { console.log(`Found match, group ${groupIndex}: ${match}`); }); }
quelle
Protokollieren Sie, um alle
background-image
URLs ohne Klammern und Anführungszeichen zu trösten :var element = document.getElementById('divId'); var prop = window.getComputedStyle(element).getPropertyValue('background-image'); var re = /url\((['"])?(.*?)\1\)/gi; var matches; while ((matches = re.exec(prop)) !== null) { console.log(matches[2]); }
quelle