【问题标题】:jQuery .load template.html in pure Javascript [closed]纯Javascript中的jQuery .load template.html [关闭]
【发布时间】:2015-12-17 09:24:42
【问题描述】:

我目前正在加载这样的模板:

$('#mydiv').load("template1.html")

我目前正在使用 jQuery,但是如何在纯 Javascript 中做同样的事情?

【问题讨论】:

标签: javascript jquery


【解决方案1】:

通过使用纯javascript ajax 并在onreadychange() 事件中将mydivinnerHTML 属性设置为ajax 响应的内容

function loadHTML(myDivId, url) {
    var xmlhttp;
    if (window.XMLHttpRequest) 
    {
        xmlhttp = new XMLHttpRequest();
    } 
    else 
    {
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    }

    xmlhttp.onreadystatechange = function() 
    {
        if (xmlhttp.readyState == XMLHttpRequest.DONE ) 
        {
           if(xmlhttp.status == 200){
               document.getElementById(myDivId).innerHTML = xmlhttp.responseText;
               var allScripts = document.getElementById(myDivId).getElementsByTagName('script');
               for (var n = 0; n < allScripts .length; n++)
               {
                   eval(allScripts [n].innerHTML)//run script inside div generally not a good idea but these scripts are anyways intended to be executed.
               }
           }
           else {
               alert('Error');
           }
        }
    }

    xmlhttp.open("GET", url, true);
    xmlhttp.send();
}

loadHTML( "mydiv", "template1.html" );

【讨论】:

  • load 实际执行添加到 DOM 的脚本块
  • @Haketo 如果 HTML 有脚本块,并且一旦使用 innerHTML 将它们设置在 div 中,那么它将自动加载并执行。
  • 没有。这不是 innerHTML 规范的一部分,这就是 jQuery 自己做的原因
  • @Haketo 你是说 div 中的
  • @Haketo 明白了。进行了更改。谢谢
猜你喜欢
  • 2013-10-22
  • 2012-12-23
  • 2015-03-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-19
  • 2011-09-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多