所以我试图通过javascript动态设置图像src属性,如下所示:
var url = 'query.php?m=traffic&q=getgraph&id='+pipeId+'&start=-3h';
console.log(url);
$('#3h').attr('src',url);
问题是,它在控制台中显示为query.php?m=traffic&q=getgraph&id=1&start=-3h
,#3h图像元素的实际设置src为query.php?m=traffic&q=getgraph&id=1&start=-3h
然后,当然,它不起作用。如何避免jQuery的attr()方法的字符转义?关于如何实现我的目标的任何其他建议也是非常受欢迎的。
答案 0 :(得分:3)
如果它不起作用,那不是因为&符号被转义。作为HTML元素中的属性,需要转义所有XML实体:
--+-------
< | <
> | >
" | "
& | &
例如,如果我有index.php?foo=bar&buzz=baz
,并且我希望该页面有一个a
元素目标,我需要像这样设置锚点:
<a href="index.php?foo=bar&buzz=baz
href会被解码为:index.php?foo=bar&buzz=baz
我会看看我是否找不到相关文档。
答案 1 :(得分:2)
我在您的代码中看到的唯一问题是您的ID属性以数字开头,这在HTML4中无效。
$('#3h') // invalid for HTML4
您应该将元素上的ID更改为以h3
$('#h3') // valid ID for HTML4
答案 2 :(得分:0)
对我而言,它正在发挥作用:
答案 3 :(得分:0)
在将数据写入属性之前,您可以escape
数据。
试试this fiddle
$('#3h').attr('src', escape(url));
然后
unescape($('#3h').attr('src'))
答案 4 :(得分:-1)
您可以避免使用jQuery,而是使用原生JavaScript / DOM函数:
document.getElementById('3h').src = url;