为什么在 css 工作时不加载 js 一次不起作用?

Why won't loading js once doesn't work when css works?

这只加载 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 评论的回复。

我的论点是苹果是红色的还是

红苹果!=红橙。

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

有人请 explain/correct 我 & 让我知道如何以及为什么 javascript treats/thinks 阅读苹果与红橙相同。

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

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

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