Javascript在JSFiddle上运行,但不在网页上运行 [英] Javascript Running on JSFiddle but not on a webpage

查看:157
本文介绍了Javascript在JSFiddle上运行,但不在网页上运行的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

好的,我有一个代码可以根据下拉选择显示不同的表单

这里是。那么它总是给我Test1这意味着它不改变div显示,它在JSFiddle上工作,但不在网页上。$ .b
$ b

b $ b,这是我的网页标记

 < html> 
< body>

< style>
.hidden {
display:none;
}

< / style>

< script type ='text / javascript'>

document.getElementById('options')。onchange = function(){
var i = 1;
var myDiv = document.getElementById(i);
while(myDiv){
myDiv.style.display ='none';
myDiv = document.getElementById(++ i);
}
document.getElementById(this.value).style.display ='block';
};

< / script>
< select name =optionsid =options>
< option value =1>显示< / option>
< option value =2> Wka< / option>
< / select>

< div id =1class =hiddenstyle =display:block> Test 1< / div>
< div id =2class =hidden> Test 2< / div>

< / body>
< / html>


这是因为在小提琴中你的代码被设置为运行在 onLoad 中,但是在你的代码中它是在DOM创建之前运行的。



将代码包装到 window.onload 这样的事件:

  window.onload = function() 
{
document.getElementById('options')。onchange = function(){
var i = 1;
var myDiv = document.getElementById(i);
while(myDiv){
myDiv.style.display ='none';
myDiv = document.getElementById(++ i);
}
document.getElementById(this.value).style.display ='block';
};
};

无论如何,就像@positivew记住的,你的代码错过了< head> 标签。在你的JS脚本里面,它在语义上是正确的。


Ok so I have a code that would show different forms based on dropdown selection
Here's
the fiddle to that..

Well its always giving me Test1 which means its not changing the div display, it's working on JSFiddle but not on the webpage.. and here's my webpage markup

<html>
<body>

<style>
.hidden {
    display: none;   
}    

</style>

<script type='text/javascript'>

              document.getElementById('options').onchange = function() {
    var i = 1;
    var myDiv = document.getElementById(i);
    while(myDiv) {
        myDiv.style.display = 'none';
        myDiv = document.getElementById(++i);
    }
    document.getElementById(this.value).style.display = 'block';
};

             </script>
<select name="options" id="options">
  <option value="1"> Display </option>
  <option value="2">Wka</option>
</select>

<div id="1" class="hidden" style="display: block">Test 1</div>
<div id="2" class="hidden">Test 2</div>

</body>
</html> 

解决方案

That is because in the fiddle your code is set to run at onLoad, but in your code its running before the DOM is created.

Wrap your code into a window.onload event like this:

window.onload = function()
{
    document.getElementById('options').onchange = function() {
        var i = 1;
        var myDiv = document.getElementById(i);
        while(myDiv) {
            myDiv.style.display = 'none';
            myDiv = document.getElementById(++i);
        }
        document.getElementById(this.value).style.display = 'block';
    };
};

Anyway, like @positivew remembered, your code misses the <head> tag. Is semantically correct to put your JS scripts inside it.

这篇关于Javascript在JSFiddle上运行,但不在网页上运行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆