首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >香草Javascript功能在JsFiddle上工作,而不是在现场?

香草Javascript功能在JsFiddle上工作,而不是在现场?
EN

Stack Overflow用户
提问于 2016-03-01 22:58:54
回答 3查看 71关注 0票数 0

我有一个奇怪的问题,我写了一个在jsFiddle上工作很好的函数,但是当我用我的HTML写它的时候,什么都没有发生.

代码语言:javascript
复制
var el = document.querySelectorAll(".sp-methods li:first-child");
for (i = 0; i < el.length; i++) {
   alert('sad')
   el[i].style.display='none';
}

我的完整HTML是

代码语言:javascript
复制
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Untitled Document</title>
<script>
/*if(!window.location.href.indexOf("gpf") > 0){
    alert('contains gpf, show 4-6 days');
} else {*/
    var el = document.querySelectorAll(".sp-methods li:first-child");
    for (i = 0; i < el.length; i++) {
       alert('sad')
       el[i].style.display='none';
    }
/*}*/

</script>
</head>
<body>
<ul class="sp-methods">
  <li class="  ">Hide me</li>
  <li class="  ">Dont hide me</li>
  </li>
</ul>
</body>
</html>

但它在这里起作用,我不知道为什么?

JSFiddle链路

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-03-01 23:00:08

将javascript代码(脚本)放在body标记的末尾( ul标记之后)

票数 1
EN

Stack Overflow用户

发布于 2016-03-01 23:03:01

当您还没有DOM (称为渲染阻塞JavaScript )时,您正在您的渲染阻塞JavaScript中运行脚本。只需移动它,并将其包装在ready中,以获得良好的效果。观察以下情况..。

代码语言:javascript
复制
<body>
<ul class="sp-methods">
  <li class="  ">Hide me</li>
  <li class="  ">Dont hide me</li>
</ul>
<script>
    document.addEventListener('DOMContentLoaded', function(){ 
        var el = document.querySelectorAll(".sp-methods li:first-child");
        for (i = 0; i < el.length; i++) {
            alert('sad')
            el[i].style.display='none';
        }  
    }, false);
</script>
</body>

当DOM准备好时,有几种方法可以运行脚本。参见如此问题纯JavaScript,相当于jQuery的$.ready()如何在页面/dom准备好时调用函数 -关于这个主题的整个讨论

JSFiddle链路 -更新小提琴

作为观察,标记中有一个额外的关闭</li>

票数 0
EN

Stack Overflow用户

发布于 2016-03-01 23:13:25

我的建议是让你看看这篇文章的第一个答案:纯JavaScript,相当于jQuery的$.ready()如何在页面/dom准备好时调用函数

这里有两个问题:

1)代码之前有脚本,所以DOM还没有准备好。

2)您的脚本只有几行代码,不需要强制执行。我建议使用IIFE模式(函数(){.})或document.onload

Jsfiddle为你做了两件事,这就是它在那里工作的原因。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35735309

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档