我怎样才能重复功能来放置另一个innerHTML?

Posted

技术标签:

【中文标题】我怎样才能重复功能来放置另一个innerHTML?【英文标题】:How can I repeat function to put another innerHTML? 【发布时间】:2017-09-27 09:34:44 【问题描述】:

单击某些内容后,我想在 html 中创建 div 部分,但它只发生一次,如果我再次单击,它什么也不做。可能是非常基础的事情,但我只是初学者。

document.getElementById("plusvideo").onclick = function gkHaj() 
  var fdsf = 2;
  var text = document.getElementById("leftsidesd").innerHTML;
  var i = 1;
  if (fdsf == 2) 
    document.getElementById("leftsidesd").innerHTML = document.getElementById("leftsidesd").innerHTML + '<div class="episesnig">Episode 1 <input type="text" class="linkkepiz" placeholder="Link"></div>';
   else 
<div id="leftsidesd">

  <div class="episernig">Series 01</div>
  <div id="plusvideo">+video</div>
  <div class="episesnig">Episode 1 <input type="text" class="linkkepiz" placeholder="Link"></div>

</div>

好吧,这段代码中有些东西可能没用,但正如我所说,我点击 plusvideo,然后它工作,然后我再次点击,不再工作,我应该放什么代码或做什么。请在这里帮助这个可怜的初学者:'(

【问题讨论】:

【参考方案1】:

因为

document.getElementById("leftsidesd").innerHTML = document.getElementById("leftsidesd").innerHTML + '&lt;div class="episesnig"&gt;Episode 1 &lt;input type="text" class="linkkepiz" placeholder="Link"&gt;&lt;/div&gt;';

附加到plusvideo 的事件侦听器不再存在,因为 HTML 被修改并删除了旧元素。所以它不止一次起作用。

var fdsf = 2;

document.getElementById("plusvideo").onclick = function gkHaj() 
  var mydiv = document.createElement('div');
  mydiv.setAttribute('class', 'episesnig');
  mydiv.innerHTML = 'Episode ' + fdsf + '<input type="text" class="linkkepiz" placeholder="Link">';
  fdsf++;
  document.getElementById("leftsidesd").appendChild(mydiv);
<div id="leftsidesd">
  <div class="episernig">Series 01</div>
  <div id="plusvideo">+video</div>
  <div class="episesnig">Episode 1 <input type="text" class="linkkepiz" placeholder="Link"></div>

</div>

【讨论】:

【参考方案2】:

试试这个:

var i = 1;
            $('#plusvideo').click(function () 
                $('#leftsidesd').append('<div class="episesnig">Episode ' + i + ' <input type="text" class="linkkepiz" placeholder="Link"></div>')
                i++;
            );
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="leftsidesd">

    <div class="episernig">Series 01</div><div id="plusvideo">+video</div>

</div>

:)

【讨论】:

我很想知道为什么 OP 代码在第二次点击时不起作用 我认为是因为添加新 DIV 后更改了 DOM

以上是关于我怎样才能重复功能来放置另一个innerHTML?的主要内容,如果未能解决你的问题,请参考以下文章

为啥 chr() 返回一个十六进制值,我怎样才能让它只返回字符 [重复]

我怎样才能在“.innerHTML”中添加 <g:textField>?

获取编辑器中显示的原始AngularJS“innerHTML”?

如何使用 .InnerHTML 方法放置特定的数组项

根据该图像坐标将图像放置在另一个图像上

我怎样才能使它只有一个空状态或 ui-sortable 显示的放置目标占位符?