为什么在Dom对象中为自己分配变量会产生影响

时间:2016-05-06 09:51:49

标签: javascript html variable-assignment

我有一个HTML字符串,在我的示例中名为tinymceToHTML,我遇到的问题是,当我下载此html字符串时,图像源或href设置错误。

我的图片来源看起来像" / file /:id"在原始String中,如果我将其转换为DOM对象并输出源,它看起来像" http://localhost:3000/file:id"这是所需的输出,因为外部文档可以加载此文件。所以我提出了这个解决方案。



        var div = document.createElement('div');
        div.innerHTML = tinymceToHTML;
        var images = div.getElementsByTagName('img');
        for(var i = 0; i < images.length; i++) {
          images[i].src = images[i].src;
        }
        var a = div.getElementsByTagName('a');
        for(var i = 0; i < a.length; i++) {
          a[i].href = a[i].href;
        }
        tinymceToHTML = "<html><head></head><body>" + div.innerHTML +
                        "</body></html>";
&#13;
&#13;
&#13;

我的问题是,我不知道为什么将变量赋值给自己在这种情况下有所不同:images [i] .src = images [i] .src或a [i] .href = a [我] .href。

如果我让程序向我显示带有警报框的输出,它会告诉我我想要的URL,但如果没有这个分配,程序就不会做它应该做的事情。

我希望任何人都可以向我解释这种效果,以便更改代码,以便更清楚地表明这一行是必需的。

我还创建了一个小提琴示例,可以更轻松地显示我的意思,注释掉分配的行,以查看其他结果

https://jsfiddle.net/1vabgubh/5/

1 个答案:

答案 0 :(得分:3)

根据定义,图像的完整URL就是imageElement.src返回的内容。来自MDN

  

HTMLImageElement.src 是一个反映src HTML的DOMString   属性,包含图像的完整URL,包括基URI。

如果您需要它们如何在最终字符串中出现,那么images[i].src = images[i].src似乎是一种合理而简洁的方法。我只想添加评论以帮助理解,比如

images[i].src = images[i].src; // force the src to be the full URI