【问题标题】:Cannot run js script after fetch it (vanilla js)获取后无法运行 js 脚本(vanilla js)
【发布时间】:2021-06-03 23:43:26
【问题描述】:

您好,我在 javascript 中获取数据时遇到问题。我想获取 api,但每次我想这样做时,都会出错。首先,我想获取 html 模板,这工作正常,但是当我想使用该文件中的 JS 脚本时,它显示“未定义函数”我尝试了很多方法来做到这一点。下面是不起作用的代码

var dataset; 
fetch('../templates/mainPage.html') 
    .then(response => response.text()) 
    .then(data => {
    dataset = data;
    document.getElementById('mainContent').innerHTML = dataset;
    //var script = document.createElement('script');
    //script.src = '../js/mainTmpl.js';
    
    //document.body.appendChild(script);
    //document.body.innerHTML += '<script defer src="../js/mainTmpl.js"></script>';
    //script.addEventListener('load', logDataset);
    
    logDataset();
});

以下是我想要使用的模板(HTML 模板和 JS 脚本已添加到主 HTML 中,但显示“未定义 logDataset”

<div class="content">
    <div class="main-container">
        <span class="main-text" id="main-text">{{TEST}}</span>
        <div class="blue-line"></div>
        <span class="sub-text" id='sub-text'></span>
    </div>
</div>
<script>
window.logDataset = function () {
var thathref = window.location.pathname;
document.getElementById('mainContent').innerHTML = dataset; 
var mainText = document.getElementById('main-text');
var subtext = document.getElementById('sub-text');
console.log('test');
fetch('http://localhost:8080/'+thathref).then(
function(u){ return u.json(); }
).then(function(data){
        var data1 = JSON.parse(JSON.stringify(data));
        mainText.innerHTML = data1[0].text;
        subtext.innerHTML = data1[1].text;
        console.log(data1[0].text);
    }
);

}

我评论了我尝试过的不同方法,但它仍然很糟糕(我必须在其他文件中有 JS 脚本)

错误屏幕下方Error

Error2

【问题讨论】:

  • 读取错误,表示未定义变量。
  • 是的,我知道,但它是在第二个文件中定义的,我将第二个文件分配给第一个文件
  • 它们会按顺序执行。没有吊装。如果一个文件依赖于另一个文件,则必须将其放在需要的文件之后
  • 好的,你能给我举个例子吗?我真的很在乎这个。我是否必须在第二个文件中添加更多内容?检查它是否已加载或什么?
  • 不要在您的(声明)文件中调用任何函数,创建最后一个文件,您将在其中调用已声明的函数

标签: javascript html dom promise fetch


【解决方案1】:

【讨论】:

  • 它不会那样工作,因为我在 stackblitz 中有 1 个文件,我想要 1 个具有不同模板 js 和 html 的文件 html。加载它们并运行
  • 请贴出完整的代码url并调整格式。每个文件有什么作用,最后运行起来有什么作用?
  • 只有以上部分,很难理解你想要的效果
  • 好的,我找到了解决方案,这是问题,因为我没有解决承诺,这就是我无法运行任何脚本的原因
猜你喜欢
  • 2022-01-25
  • 2021-12-15
  • 1970-01-01
  • 1970-01-01
  • 2020-01-21
  • 2022-01-14
  • 2021-11-02
  • 1970-01-01
  • 2018-11-17
相关资源
最近更新 更多