Javascript 基于下拉选择显示文本(代码适用于JSFIDLE,但不适用于网站?)

Javascript 基于下拉选择显示文本(代码适用于JSFIDLE,但不适用于网站?),javascript,jsfiddle,Javascript,Jsfiddle,我在某个地方对此代码有问题,但无法解决 在那里工作很好,但我可以让它在wamp本地或live上的两个不同网站上工作。我遗漏了什么吗?您的JS Fiddle示例之所以有效,是因为您在JSFIDLE中选择了onload选项。所以 确保已使用窗口包装代码。onload window.onload = function(){ document.getElementById('email-list').onchange = function() { var i = 1; var myDiv

我在某个地方对此代码有问题,但无法解决


在那里工作很好,但我可以让它在wamp本地或live上的两个不同网站上工作。我遗漏了什么吗?

您的JS Fiddle示例之所以有效,是因为您在JSFIDLE中选择了
onload
选项。所以 确保已使用
窗口包装代码。onload

window.onload = function(){
document.getElementById('email-list').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';
}};

您是否有任何错误?@ZachL我在inspector的控制台中找不到任何错误,但jslint抛出了一些错误,我真的不知道如何更正。我是javascriptfyi新手,添加这样的事件侦听器对X浏览器不友好,在IE中可能根本不起作用。我个人更喜欢使用库(如jQuery)来处理事件委派。@ZachL:哪种浏览器不支持将事件分配给[event]上的
propert of a element?如果您不发布代码,则无法判断您的站点存在什么问题。可能是一个DOM就绪的问题。可能是别的。您的JSFIDLE在DOM就绪后运行代码。啊,可能就是这样。或者,您可以在正文的末尾添加脚本,以确保已加载html。就是这样,非常感谢!
window.onload = function(){
document.getElementById('email-list').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';
}};