Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/240.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有没有办法在加载JavaScript之前不加载html?_Javascript_Php_Jquery_Html_Wordpress - Fatal编程技术网

有没有办法在加载JavaScript之前不加载html?

有没有办法在加载JavaScript之前不加载html?,javascript,php,jquery,html,wordpress,Javascript,Php,Jquery,Html,Wordpress,我想确保所有JavaScript都在页面加载之前发生。我正在更改一些innerhtml,但不希望显示原始innerhtml 当前,当我的页面加载书籍时会显示一小会儿,最后当脚本被读取时,它会被替换。如何防止它显示初始文本 仅供参考,该脚本存在于php文件中 <?php ?> <script> function changeme(){ var myvar = "test-string-is-long-to-notice-the-changed-text"; var span

我想确保所有JavaScript都在页面加载之前发生。我正在更改一些innerhtml,但不希望显示原始innerhtml

当前,当我的页面加载书籍时会显示一小会儿,最后当脚本被读取时,它会被替换。如何防止它显示初始文本

仅供参考,该脚本存在于php文件中

<?php
?>
<script>
function changeme(){
var myvar = "test-string-is-long-to-notice-the-changed-text";
var spans = document.getElementsByTagName("span");
for(var i=0;i<spans.length; i++) {
if(spans[i].textContent.trim().toLowerCase()==="books") {       //is this the "Welcome" span?
spans[i].innerHTML = myvar;  //change to new value
break;                                  //hop out of the loop, we're done
}
 }
 }
 window.onload = function() {
 changeme();
 };
</script>

在HTML之前加载JS不是一个好主意,因为在使用JS加载之前不能更改HTML元素

解决方案1:最初,将不希望显示的html标记保留为空,因为您希望显示来自JS的新数据


解决方案2:最初,保持这些元素的样式显示为:无,当您使用Js在元素中添加数据时。更新样式以显示:“block”或您想要的任何其他样式,例如span[i]。style.display='block'

您不能将JS应用于尚不存在的html文档。始终先加载html,然后应用JS。你在这里看到的是html被加载,JS需要多少秒来加载和修改?我建议找出一种更有效的方法来实现所需的JS。你可能只是看到了JS延迟。您可以使用更高效的实现和一些CSS来修复它。我在这里可能是错的,但是将JS应用于html是没有意义的,因为html还没有出现

如果我在浏览器解析和呈现html之前就尝试这么做,我将如何应用JS呢


还要记住,总是先加载PHP,然后加载html,然后加载JS。如果页面的默认内容在加载后总是要更改,那么您需要重新考虑更改默认内容,而不是每次都动态更改。其概念是,您的默认显示应该是您希望页面显示的内容。任何额外的东西都应该是用户交互或插件应用的结果。但不是全部卖出,总是在页面加载时将X更改为Y。从Y开始,不要强迫用户进行处理。解决方案2在我看来更好。这样,对当前应用程序的更改就更少了。例如,有两个Dom元素,比如说两个DIV,一个专用于样式为.display=none的书籍。这必须在CSS的一开始就发生,不应该被覆盖。可能将其设置为元素的Id。然后在页面加载完成后,就在加载结束时,您可以将显示更改为block以显示最终的元素集。当所有这些都在进行时,为了获得更好的用户体验,请显示加载。。。将DIV元素分配给用户。