【发布时间】:2014-12-03 05:53:22
【问题描述】:
这是我的问题的一些代码:
var jsdom = require('jsdom');
var content = '\
<p>\
<img src="assets/logo">\
<img src="assets/background">\
</p>\
';
jsdom.env(content, function (error, window) {
var $ = require('jquery')(window)
var elements = $.find('img');
elements.forEach(function(imageElement) {
var src = $(imageElement).attr('src') + '.jpg';
$(imageElement).attr('src', src);
// print "assets/logo.jpg" and "assets/background.jpg"
console.log($(imageElement).attr('src'));
});
console.log(content);
});
我要做的是,将每个img 元素上的src 的内容更改为assets/logo.jpg 和assets/background.jpg。
谁能建议我,我该怎么做才能将content 更改为:<p><img src="assets/logo.jpg"><img src="assets/background.jpg"></p>?
【问题讨论】:
-
将新的
innerHTML分配给content?查看 jsdom 文档了解如何将 DOM 序列化回 html。 -
@Bergi:我的意思是,我想从这行代码中更改
content$(imageElement).attr('src', src);但不幸的是它不能直接更改content的值。 -
你当然不知道。
content是一个字符串。 DOM 不存储在字符串中,您正在操作的是一棵节点树。您创建 DOM 的字符串将不受影响。您需要将其序列化回一个新字符串。 -
@Crazenezz 我已经撤销了你的编辑。请不要在您的问题中添加新问题。否则,您正在创建的是 "chameleon question" 如果您有新问题,请发布新问题。不过,请确保您阅读了与您的问题相关的其他 SO 问题。谢谢你。 (在您看来,这可能是同一个问题,但您添加的确实是一个不同问题。)
-
@Louis:不是新问题,只是想告诉你我用我的代码做了什么,我认为这个问题与stackoverflow.com/questions/9419242/…有关
标签: javascript jquery node.js pass-by-reference jsdom