我正在尝试通过javascript将宽度和高度属性添加到标记中。 img src将来自网络(http://www....。)。我正在使用javascript.replace来添加高度和宽度。这是我的代码。 (目前仅适用于宽度)。
<!DOCTYPE html>
<html>
<body>
<script src="https://code.jquery.com/jquery-1.12.4.min.js"></script>
<script>
$(window).load(function() {
var htmlString = '<div class="sample"> <img src="https://kbob.github.io/images/sample-5.jpg"> </div><div class="sample_another"><img src="http://www.crazymonkeydefense.com/wp-content/uploads/2012/02/sample-img3.png"> </div> ';
function dostuff(img, imgString) {
img.onload = function() {
imgString = imgString.replace("<img ", '<img width="' + this.width + 'px" ');
console.log("modified = " + imgString);
};
}
var modifyImg = function(imgString) {
console.log("original = " + imgString)
if (imgString.indexOf('width="') == -1) {
var newImgString = (imgString.substring(imgString.lastIndexOf('src="'), imgString.lastIndexOf('"'))).replace('src="', '');
var img = new Image();
img.src = newImgString;
dostuff(img, imgString);
}
return imgString;
}
modifiedHtmlString = htmlString.replace(/<img[^>]+>/g, modifyImg);
console.log(modifiedHtmlString);
});
</script>
</body>
</html>
这个问题是htmlString.replace(/] +&gt; / g,modifyImg)这会立即执行,并将ModifyImg值设置为undefined,而不是从return语句中获取它。
我如何处理此解决方案。
答案 0 :(得分:0)
使用done()
功能可以帮助您解决此问题。
$.when(ModifyImg).done(function(v){
modifiedHtmlString = htmlString.replace(/<img[^>]+>/g,v);
console.log(modifiedHtmlString);
});