2017-09-07 60 views
0

采用动态ID我有一个创建从JavaScript动态但当我试着通过ID返回获取元素空获取从动态span元素

这是我如何从一个外部的JavaScript填充跨度跨度:

function createResponseNode() { 
    var node = document.createElement('div'); 
    node.className = "clearfix container col-8 right card p-3 mb-2 bg-info text-white text-right "; 
    node.innerHTML = "..."; 
    resultDiv.appendChild(node); 
    return node; 
} 

这里是获取从JavaScript

<div class="col s5 " id="wrp"> 
    <h5>Response payload:</h5> 
    <span id="jsonResponse" name="response"></span> 
</div> 

<script> 
    var text = document.getElementsByTagName("span")[0].innerHTML; 
    console.log(text); 
</script> 

,因为我JSP中使用我可以使用Java代码的响应的跨度,也返回null。

回答

0

你的代码实际上并没有任何'document.getElementById'调用,而你的创建div的函数实际上并没有在div上设置一个ID,所以你不能这样找到它无论如何。

在某处,动态创建的div要运行

node.setAttribute("id", "MyDivId");

然后你就可以执行使用

document.getElementById("MyDivId");

希望这有助于查找。

+0

我试着用这个var txt = document.getElementById(“jsonResponse”);但不起作用 –

+0

您是否确保填充jsonResponse的函数中的“resultDiv”绝对是选取正确的div。 – Chazmus

+0

只是有一个想法,你是否可能执行ajax调用来检索jsonResponse中的一些数据,然后尝试将该数据写入跨度?您可能会尝试在ajax数据有机会返回之前编写响应。您可能需要将“createResponseNode”函数作为回调函数传递给ajax调用。看看这里的例子 - https://www.w3schools.com/xml/ajax_intro.asp – Chazmus