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

时间:2017-07-05 17:31:22

标签: 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本身固有的某种bug?

修改

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

我的论点是苹果有红色或

红苹果!=红橙色。

从逻辑上讲,我认为上面的剧本应该有效;但它没有!!

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

1 个答案:

答案 0 :(得分:1)

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

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个元素。所以你只需要将some_other_class_name用于js文件或其他文件,或者随机生成类名如果你有N个不同的文件