Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jQuery.html()正常工作,但JavaScript.innerHTML不工作_Javascript_Jquery - Fatal编程技术网

jQuery.html()正常工作,但JavaScript.innerHTML不工作

jQuery.html()正常工作,但JavaScript.innerHTML不工作,javascript,jquery,Javascript,Jquery,我无法找到$('#valvonta_d').html(数据)的原因正在工作,但valvonta_div.innerHTML=data根本不起作用 我有一些JavaScript/jQuery代码: $(document).ready(function(){ valvonta = function() { var kaavio = 106; jQuery.post("hae_tilanteet.php", { kaavio: kaavio }).done(f

我无法找到
$('#valvonta_d').html(数据)的原因正在工作,但
valvonta_div.innerHTML=data根本不起作用

我有一些JavaScript/jQuery代码:

$(document).ready(function(){
  valvonta = function() {
    var kaavio = 106;

    jQuery.post("hae_tilanteet.php", {
      kaavio: kaavio
    }).done(function(data) {
      // the following would work, but I prefer using JavaScript:
      // $('#valvonta_d').html(data);

      // this is not working
      var valvonta_div = document.getElementById('valvonta_d');
      valvonta_div.innerHTML = data;
    });
  };

  setTimeout(valvonta, 6000);
};
我有以下HTML代码:

<div id="valvonta_d"></div>

变量数据的值为

元素通过
innerHTML
插入,因为它可能允许跨站点脚本

您必须通过在单独的步骤中检索它们的内容来评估它们

}).done(function(data) {
    var valvonta_div = document.getElementById('valvonta_d');
    valvonta_div.innerHTML = data;

    Array.from(valvonta_div.querySelectorAll('script')).forEach(function (script) {
        if (script.getAttribute('src')) return;

        // `(0, ...)` for global eval via indirect reference
        (0, eval)(script.textContent || '');
    });
});

但是,如果可以,请尽量避免使用
eval()

至少在一般情况下,您应该能够将
的通用形式定义为
函数
,包括在此之前的页面中

function prepareVolvanta(kaavio, container) {
    // ...
}
然后,在内容准备就绪时调用该函数

var valvonta_div = document.getElementById('valvonta_d');
valvonta_div.innerHTML = data; // content markup only

prepareVolvanta(kaavio, valvonta_div);


相关:

控制台中有错误吗?什么是“不工作”意思?你到底在附加什么?您显示的代码中没有问题……而且您没有调用
valvonta
函数,因此两者都不应该工作。你把代码放在那里有什么原因吗?@squint我添加了最后一行。@xms在我们能够直接帮助你之前,你必须详细说明你的文章,而不只是猜测。说“不行”根本不够详细。可能性太多了。所以这两个结果到底有什么不同?不同的外表?不同的行为?您能否将hae_tilanteet.php提供的内容作为
数据提供或至少汇总为
数据
?我应该如何声明valvonta_div?如果我添加
setTimeout(valvonta,6000)
.done(函数(数据)的内部
使用您的代码时,它不再工作。否则,您的代码工作正常。我没有建议您移动
设置超时
。另一个用户先前的回答提出了类似的建议,尽管不完全是这样。我修改了我的开场白,现在您明白我的意思了。@xms首先,请不要编辑您的问题n在某种程度上故意破坏了代码段中的代码。注释就足够了。-我理解你的意思,但我认为你可能把我的回答与另一篇由不同用户编写和删除的帖子混淆了。在这些注释之前,我没有提到
setTimeout()
,也没有建议将其移动到任何地方。