Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/455.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 Can';t使用JS函数更改div样式_Javascript_Html_Css - Fatal编程技术网

Javascript Can';t使用JS函数更改div样式

Javascript Can';t使用JS函数更改div样式,javascript,html,css,Javascript,Html,Css,主要目标是根据我单击的按钮显示不同的div,因此它们都以“none”的显示样式开始(除了名为“atualizacoes”的默认样式)。单击按钮后,所有div都应设置为 display=“none”之后,与该按钮关联的按钮被设置为display=“block”。 但是有些地方不对劲,因为当我单击其中一个按钮时,默认的div确实消失了,但什么也没有出现 这就是我试图实现它的方式: 整齐: 代码片段1-我在index.html中使用的函数,用于更改所有 显示 代码片段2-我的样式表中的规则 代码片段3

主要目标是根据我单击的按钮显示不同的div,因此它们都以“none”的显示样式开始(除了名为“atualizacoes”的默认样式)。单击按钮后,所有div都应设置为
display=“none”
之后,与该按钮关联的按钮被设置为
display=“block”
。 但是有些地方不对劲,因为当我单击其中一个按钮时,默认的div确实消失了,但什么也没有出现

这就是我试图实现它的方式:

整齐: 代码片段1-我在index.html中使用的函数,用于更改所有 显示

代码片段2-我的样式表中的规则

代码片段3-部分index.html代码(我不想粘贴 (一切)


功能替换(显示){
document.getElementById('default').style.display=“无”;
document.getElementById('ecra').style.display=“无”;
document.getElementById(show.syle.display=“block”;
}
.ecra
{
显示:无;
}

大学平台
选择权
埃斯图丹特酒店
阿迪西奥纳尔大学
你好,世界

测试1 测试2
你写的东西有几个问题

首先,您没有任何ID为“ecra”的元素—您要做的是影响所有具有类“ecra”的元素。您可以通过在
document.getElementsByClassName(“ecra”)
上循环或映射来实现这一点

其次,当您试图显示
show
元素时,您拼写错误了
style

请尝试改用此功能:

function replace(show) {
    document.getElementById("default").style.display = "none";
    Array.from(document.getElementsByClassName("ecra")).map(element => element.style.display = "none");
    document.getElementById(show).style.display = "block";
}

按照我的想法,您需要按类名获取元素。它们是
ecra
,因此您可以使用
querySelectorAll
并对其长度进行循环。我不会使用
getElementsByClassName
,因为它会使行更长并返回数组

function replace(show){
    var q=document.querySelectorAll('.ecra'),
    document.getElementById('default').style.display="none";
    for(var i=0,l=q.length;i<l;i++){
            !function(i){
                    q[i].style.display="none"
            }(i)
    }
    document.querySelector('#'+show).style.display = "block"
}
功能替换(显示){
var q=document.queryselectoral('.ecra'),
document.getElementById('default').style.display=“无”;

对于(var i=0,l=q.length;i我在您的页面中看到了jQuery导入。因此我建议使用jQuery

<script type="text/javascript">
        function replace(show) {
          jQuery(function($){
                $("#default").css({
                    "display" : "none"
                });
                $(".ecra").css({
                    "display" : "none"
                });
                $("#"+show).css({
                    "display" : "block"
                });
          });
        }
</script>

功能替换(显示){
jQuery(函数($){
$(“#默认值”).css({
“显示”:“无”
});
$(“.ecra”).css({
“显示”:“无”
});
$(“#”+show).css({
“显示”:“块”
});
});
}
已编辑,缺少字符。

JS已更正:

.ecra
{
显示:无;
}

选择权
埃斯图丹特酒店
阿迪西奥纳尔大学
你好,世界

测试1 测试2 函数替换1(显示){ document.getElementById('default').style.display=“无”; var allByClass=document.getElementsByClassName('ecra'); 对于(var i=0;i
没有id为
ecra
的元素。请尝试使用
文档。GetElementsByCassName
并使用for循环将所需样式应用于所有元素。检查控制台是否有错误。至少会有两个;)我将尝试循环,然后循环中不需要IIFE。@Andreas我将“=0”放在现在,我的网络编辑速度太慢了。这并不是因为我一天之内没有这么做就遇到了问题。似乎不起作用,这确实让我的div出现了,但它不会让其他每个div都消失,因为你的干预,huhuhuhuhu。我错过了它哈哈哈哈哈哈,这个也起作用了!谢谢大家:)