在innerHTML中加载的页面中显示JavaScript变量

时间:2018-06-09 15:17:40

标签: javascript html

我有一个HTML页面,可以通过innerHTML加载到另一个HTML页面中。经过几天的工作,这个脚本工作正常,并为内部页面调用另一个JS文件,一个文件(名为“Unified_app.js”)基本上运行一些日期计算。一切正常,正确的日期打印到控制台。但是,我无法弄清楚页面内的页面是否可以显示控制台日期。 Document.write在这种情况下不起作用(我假设因为标签没有正确读取?),所以我需要提出一个解决方法。有任何想法吗?

这是我拥有的innerHTML函数:

function getYearOffset(strCutoffDate, intYearOffset)
{
  var datCurrentDate = new Date();
  var intCurrentYear = datCurrentDate.getFullYear();
  var intCurrentMonth = strCutoffDate.substr(5, 2) - 1;
  var intCurrentDay = strCutoffDate.substr(8, 2);
  var datCutoffDate = new Date(intCurrentYear, intCurrentMonth, intCurrentDay);

  if (Number(datCurrentDate) < Number(datCutoffDate))
  {
    var datRequestedDate = new Date(datCurrentDate.getFullYear(), intCurrentMonth, intCurrentDay);
  }
  else
  {
    var datRequestedDate = new Date(datCurrentDate.getFullYear() + intYearOffset, intCurrentMonth, intCurrentDay);
  }
return datRequestedDate.getFullYear();
}

var script = document.createElement("script");
script.src = "/resource/resmgr/scripts/Unified_app.js";
document.head.appendChild(script);


function getInclude(strIncludeContainer, strIncludeURL)
{
  var strPage = '';
  var intIndexOfBodyOpen = 0;
  var intIndexOfBodyClose = 0;
  var objXhttp;

  objXhttp = new XMLHttpRequest();
  objXhttp.onreadystatechange = function()
  {
    if (this.readyState == 4 && this.status == 200)
    {
      strPage = this.responseText;
      intIndexOfBodyOpen = strPage.indexOf('<body>');
      intIndexOfBodyClose = strPage.indexOf('</body>');
      document.getElementById(strIncludeContainer).innerHTML = strPage.substring(intIndexOfBodyOpen + 6, intIndexOfBodyClose);
    }
  };
  objXhttp.open("GET", strIncludeURL, true);
  objXhttp.send();
}

我正在使用:

<script>document.write(award_year1);</script>

编写以下日期调用:

const date = new Date();
let offset = 0;
const threshold = new Date();
threshold.setMonth(3); //January is 0!
threshold.setDate(3);
if (Date.now() > threshold) { 
  offset = 1;
}
var theDate = new Date();
var award_year1 = date.getFullYear() + offset;
var award_year2 = date.getFullYear() + 1 + offset;

console.log(award_year1);
console.log(award_year2);

当加载页面内页面HTML文件或内部页面本身时,我得到了发送到控制台的正确日期计算,但是当加载到内部HTML页面时,我似乎无法在innerHTML页面中打印它们。其他页面。你有什么想法可以把我送到正确的道路上吗?这可能超出了我对JavaScript的理解水平。我想也许我的代码不是正确的顺序,但我一直在摆弄这个,似乎无法弄清楚在哪里或为什么。

2 个答案:

答案 0 :(得分:0)

我不确定这是否能解决问题,但您可以尝试一下。 正如你所说的,不会触发document.write,因为你的DOM在你的DOM之前被加载了。

document.addEventListener("DOMContentLoaded", function(event) {
    //your functions
});

也许这会帮助你

答案 1 :(得分:0)

我想这是不可能的。我最终用iframe替换了innerHTML,这似乎有效,所以我现在可以使用脚本标签。不是一个理想的解决方案,但它的工作原理