javascript - 为什么加载js一次就不行了,而css却可以呢?

标签 javascript appendchild setattribute filereference

这只加载 css 一次就​​好了。

 if (filetype=="css" && !document.querySelector('.load_once') ) { 
    var fileref=document.createElement("link")
    fileref.setAttribute("rel", "stylesheet")
    fileref.setAttribute("type", "text/css")
    fileref.setAttribute("href", filename)
    fileref.setAttribute("class", "load_once")
}

但是,相同的脚本不适用于 js 文件。

 if (filetype=="js" && !document.querySelector('.load_once') ) {
    var fileref=document.createElement('script')
    fileref.setAttribute("type","text/javascript")
    fileref.setAttribute("src", filename)
    fileref.setAttribute("class", "load_once")
}

我通过在函数触发后清空该函数来解决该问题,以便该函数仅触发一次。

但是,我仍然想了解为什么上面的脚本只适用于 css 文件而不适用于 js 文件。

我在这里做错了什么?

我不明白为什么这不起作用。

这是 JavaScript 的怪异之处之一吗? JavaScript 本身固有的某种错误?

编辑

请。请参阅下面我对 Borcuhin 评论的回复。

我的论点是红色的苹果或

红苹果!=红橙。

从逻辑上讲,我认为我上面的脚本应该有效;但事实并非如此!!

有人请解释/纠正我并让我知道javascript如何以及为什么对待/认为读苹果与红橙相同。

最佳答案

您可以像这样插入脚本标签:

var script = document.createElement('script');
script.setAttribute('src', '/script.js');
// put tag to the head
document.getElementsByTagName('head')[0].appendChild(script);

更新 您需要为每个文件包含使用不同的类。因为一旦您添加了类 some_class_name 的标签,选择器:document.querySelector('.some_class_name') 将找到 1 个元素。所以你只需要对js文件或其他文件使用some_other_class_name,或者随机生成类名如果你可以有N不同的文件

关于javascript - 为什么加载js一次就不行了,而css却可以呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44932608/

相关文章:

javascript - setAttribute 不适用于 create-react-app 中的 onClick

javascript - 通过 onmouseover 更改 td 的类属性

javascript - 如何使我的滚动流畅?

javascript - 如何将异步函数值传递给事件处理程序

javascript - JS : Appending elements to head - how to chain the methods?

javascript - 与 JavaScript 和 DOM 重复代码作斗争

java - 在请求范围上迭代和设置属性

javascript - 为什么所有 redux reducer 函数都在运行时执行?

javascript - 如何使用 Html 和 JavaScript 创建验证码?

javascript - 使用 Javascript 删除表单字段