innerHTML中的html标签

时间:2017-04-14 14:49:18

标签: javascript hyperlink escaping innerhtml

HTML

<a href="#1" class="current">1</a>    
<div id="xyz"></div>

的JavaScript

function updateHash() {
  var number = document.querySelectorAll('.current')[0].innerHTML;
  document.querySelector('#xyz').innerHTML = '<a>'+ number + '</a>';
}
updateHash(); 
显然,这很有效。

但是,我需要<a><a href="#>

所以当我这样做时:

document.querySelector('#xyz').innerHTML = '<a href="#'+ number + '"</a>';

失败了。

我不知道这是否可以通过逃避角色来解决;当我试图逃跑时#34; &安培; #,它没有用。

也许没有办法摆脱这种情况的角色。

非常感谢任何帮助。

[更新]

我这样解决了。

function updateHash() {
  var number = document.querySelectorAll('.current')[0].innerHTML;
  var tag = '<a href=#'    
  document.querySelector('#xyz').innerHTML = tag + number + '>next</a>';
}
updateHash();    

实际上,我做的和以前一样。但正如所指出的那样,我没有看到任何输出,因为我的href是空的。 LOL

2 个答案:

答案 0 :(得分:1)

  1. 您没有关闭a代码<a></a>
  2. innerHTML标记的a也是空的。所以不可见,但它位于body
  3. 您的错误。请检查outerHTML

    function updateHash(){
    var number = document.querySelectorAll('.current')[0].innerHTML;
    document.querySelector('#xyz').innerHTML = '<a href="#'+ number + '"</a>';
    console.log(document.querySelector('#xyz').outerHTML)
    }
    updateHash();
    <a href="#1" class="current">1</a>    
        <div id="xyz"></div>

    <强>解决

    function updateHash(){
    var number = document.querySelectorAll('.current')[0].innerHTML;
    document.querySelector('#xyz').innerHTML = '<a href="#'+ number + '">innerhtml is empty</a>';
    console.log(document.querySelector('#xyz').outerHTML)
    }
    updateHash();
    <a href="#1" class="current">1</a>    
    <div id="xyz"></div>

答案 1 :(得分:0)

使用jQuery路由,您始终可以调用parent()来获取HTML(假设父级中没有其他兄弟姐妹:

$('#xyz').html( $('.current').parent().html() )