在创建文本时,动态更改文本

时间:2018-06-10 00:31:38

标签: javascript

我试图弄清楚我是否有几个段落,如何在点击特定对象时,仅针对该段落发出警报。

例如,继承我的代码:

HTML

URL url = new URL("https://api.github.com/users/ArturGudiev/hovercard?subject_type=repository&subject_id=90508877");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
conn.setRequestProperty("Accept", "application/vnd.github.hagar-preview+json");

JS

    <div id="myDiv">StackOverflow</div>
    <div id="myDiv">StackOverflow</div>

这段代码的作用是什么,只有第一个元素弹出...我知道我可以做另一个功能,但我试着只用一个这样做而且不知道.. 我知道ID是唯一的,不应该多次使用,但是如果div是由用户动态创建的,并且每当他们点击它的特定div时,我该如何做到这一点,div应该用弹出窗口警告。

3 个答案:

答案 0 :(得分:0)

您需要遍历每个元素并单独将事件添加到项目中。

当动态添加项目时,您还需要将事件添加到它们中。

&#13;
&#13;
// Add listeners to the already create elements
[...document.querySelectorAll('div')].forEach(el => {
  el.addEventListener('click', MyFunction)
})

let i = 10

// Dynamically create some elements
setInterval(() => {
  let el = document.createElement('div')
  el.textContent = 'StackOverflow ' + i++
  el.addEventListener('click', MyFunction)
  document.body.appendChild(el)
}, 2000)

function MyFunction() {
  console.log(this.innerHTML)
}
&#13;
<div id="myDiv">StackOverflow 1</div>
<div id="myDiv">StackOverflow 2</div>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

在1个html页面中不能是相同的id。 我有一个建议给你。 它的工作:

<div onclick="show__myDiv(this)">StackOverflow 1</div>
<div onclick="show__myDiv(this)">StackOverflow 2</div>
<script type="text/javascript">
    function show__myDiv(t){
        alert(t.innerHTML);
    }
</script>

答案 2 :(得分:-1)

ID必须是唯一的。改变它们使其独一无二。