我用Phonegap构建应用程序。它从rss提要中获取xml并从中创建html以显示新闻提要。问题是图像路径是相对的。我需要用完整路径替换相对路径。图像标签显示在“description”xml标签内。我得到的描述内容如下:
$(xml).find('item').each(function (index) {
description = $(this).find('description').text();
console.log('description');
控制台输出是:
<p>Senior Rugby</p>
<p>CBC v CBS</p>
<p>
<span class="mjwideimg"><img width="300" height="247" src="/images/latestnews2/Resized/logo_300x247.jpg" alt="logo" />
</span>
</p>
然后我尝试用完整路径替换路径。我这样做:
$(description).find('img:first').attr('src', 'http://www.domain.com/img/test.png');
然后以完整路径获取新的HTML:
description = $(description).html();
console.log(description);
然而,这只是输出:
Senior Rugby
其他一切都被剥夺了。我做错了什么?
答案 0 :(得分:0)
当您找到图像时,描述是否仍然设置为$(this).find('description').text();
?
如果是这样,JQuery对象不是指向HTML元素,而是指向该元素内的一串文本。
尝试使用$(this).find('description');
答案 1 :(得分:0)
在你正在做的第一个console.log
description = $(this).find('description').text();
console.log('description');
这里你记录的是xml节点而不是你编码的变量。
另一方面,你做了一些不同的事情(这次是为变量而做的)
description = $(description).html();
console.log(description);
另一点是使用.prop()
而不是.attr()
$(description).find('img:first').prop('src', 'http://www.domain.com/img/test.png');
答案 2 :(得分:0)
最后我这样做了:
description = $(this).find('description').text();
$(description).find('img').each(function(i, obj){
src = $(obj).attr('src');
//check if not full path
if(src.indexOf('http') === -1){
//therefore its a relative path
description = description.replace(src,"http://domain.com"+src);
}
});