innerHTML给了我&作为& !

时间:2011-05-07 11:23:48

标签: javascript

是否有任何JS(非jquery)方法从跨度中获取URL(例如:<span id="h">http://x.com?d=d&x=x</span>

没有将&amp;'更改为&amp;s ???

谢谢。

4 个答案:

答案 0 :(得分:4)

document.getElementById("h").textContent.replace(/^\s\s*/, '').replace(/\s\s*$/, '');

(替换调用是修剪前导和尾随空格,在您的情况下可能不需要这样做。)

答案 1 :(得分:3)

或者,您可以使用以下技巧解码HTML实体:

function htmlDecode(input){
  var e = document.createElement('div');
  e.innerHTML = input;
  return e.childNodes[0].nodeValue;
}

htmlDecode("&lt;img src='myimage.jpg'&gt;"); 
// returns "<img src='myimage.jpg'>"

答案 2 :(得分:1)

这是因为原始HTML代码无效,但仍然按照您的意图正确解析,但应按原样打印。 &是HTML中的特殊字符,与<非常相似,您应该使用相应的html实体对它们进行编码。

答案 3 :(得分:0)

如果您想要数据的文本表示,请从textNode获取.data,而不是HTML元素的.innerHTML

var element = document.getElementById('h');
var textNode = element.firstChild;
var URI = textNode.data;

使用.innerHTML将为您提供以HTML格式编码的数据(浏览器将更正您在原始标记中出现的错误)