Javascript框正在更改

Javascript框正在更改,javascript,Javascript,我必须让箱子做以下工作: 沿着页面的左侧,有许多具有不同字体名称的框。当你点击这些框时,字体在中间框中有变化。对页面右侧和底部进行类似的框集更改 这是我到目前为止的编码: <html> <head> <title>Boxes on Boxes on Boxes</title> <style type="text/css"> #box_group1, #box_group2, #box_group3, #box_gr

我必须让箱子做以下工作: 沿着页面的左侧,有许多具有不同字体名称的框。当你点击这些框时,字体在中间框中有变化。对页面右侧和底部进行类似的框集更改

这是我到目前为止的编码:

 <html>
  <head>
    <title>Boxes on Boxes on Boxes</title>
    <style type="text/css">
#box_group1, #box_group2, #box_group3, #box_group4, #textbook {
    position:absolute;
    left:100px;
    top:100px;      
}
#box1, #box2, #box3, #box10, #box11, #box12 {
    padding:5px;
    width:50px;
    height:50px;
    float:left;
}
#box4, #box5, #box6, #box7, #box8, #box9 {
    padding:5px;
    width:50px;
    height:50px;
}   
#box1, #box4, #box7, #box10{
    background-color:orange;
}
#box2, #box5, #box8, #box11 {
    background-color:blue;
}
#box3, #box6, #box9, #box12{
    background-color:green;
}
#textbook {
    padding: 5px;
    background-color:red;
}
    </style>
    <script language="JavaScript">
        width=window.innerWidth;
        height=window.innerHeight;
    function boxes() {  
        document.getElementById("box_group1").style.left=(width-document.getElementById("box_group1").offsetWidth)/2;
        document.getElementById("box_group2").style.top=(height-document.getElementById("box_group2").offsetHeight)/2;
        document.getElementById("box_group3").style.left=width-100;100-document.getElementById("box_group3").offsetWidth;
        document.getElementById("box_group3").style.top=(height-document.getElementById("box_group3").offsetHeight)/2;
        document.getElementById("box_group4").style.left=(width-document.getElementById("box_group4").offsetWidth)/2;
        document.getElementById("box_group4").style.top=height-100;100-document.getElementById("box_group4").offsetHeight;  
        document.getElementById("textbook").style.left=(width-document.getElementById("textbook").offsetWidth)/2;
        document.getElementById("textbook").style.top=(height-document.getElementById("textbook").offsetHeight)/2;
    }
    </script>
  </head>
  <body onload="boxes()">
    <div id="box_group1">
        <div id="box1">
            First box 
        </div>

        <div id="box2">
            Second box
        </div>

        <div id="box3">
            Third box
        </div>
    </div>
    <div id="box_group2">
        <div id="box4">
            Fourth box 
        </div>

        <div id="box5">
            Fifth box
        </div>

        <div id="box6">
            Sixth box
        </div>
    </div>
    <div id="box_group3">
        <div id="box7">
            Seventh box 
        </div>

        <div id="box8">
            Eighth box
        </div>

        <div id="box9">
            Ninth box
        </div>
    </div>
    <div id="box_group4">
        <div id="box10">
            Tenth box 
        </div>

        <div id="box11">
            Eleven box
        </div>

        <div id="box12">
            Twelve box
        </div>
    </div>
    <div id="textbook">Textbook</div>
  </body>
</html>

盒子上的盒子上的盒子
#盒子组1、#盒子组2、#盒子组3、#盒子组4、#教科书{
位置:绝对位置;
左:100px;
顶部:100px;
}
#第1栏、第2栏、第3栏、第10栏、第11栏、第12栏{
填充物:5px;
宽度:50px;
高度:50px;
浮动:左;
}
#第四箱、第五箱、第六箱、第七箱、第八箱、第九箱{
填充物:5px;
宽度:50px;
高度:50px;
}   
#第1栏、第4栏、第7栏、第10栏{
背景颜色:橙色;
}
#第二箱、第五箱、第八箱、第十一箱{
背景颜色:蓝色;
}
#第三箱、第六箱、第九箱、第十二箱{
背景颜色:绿色;
}
#教科书{
填充物:5px;
背景色:红色;
}
宽度=window.innerWidth;
高度=窗内高度;
函数框(){
document.getElementById(“box\u group1”).style.left=(width document.getElementById(“box\u group1”).offsetWidth)/2;
document.getElementById(“box\u group2”).style.top=(height document.getElementById(“box\u group2”).offsetHeight)/2;
document.getElementById(“框组3”).style.left=width-100;100 document.getElementById(“框组3”).offsetWidth;
document.getElementById(“box\u group3”).style.top=(height document.getElementById(“box\u group3”).offsetHeight)/2;
document.getElementById(“box_group4”).style.left=(width document.getElementById(“box_group4”).offsetWidth)/2;
document.getElementById(“框组4”).style.top=height-100;100 document.getElementById(“框组4”).offsetHeight;
document.getElementById(“教科书”).style.left=(width document.getElementById(“教科书”).offsetWidth)/2;
document.getElementById(“教科书”).style.top=(height document.getElementById(“教科书”).offsetHeight)/2;
}
第一箱
第二箱
第三个盒子
第四箱
第五箱
第六箱
第七箱
第八箱
第九箱
第十箱
十一盒
十二盒
教科书

我使用jQuery完成了这项任务,它更易于维护。使用函数获取所需的数据,并对其进行操作以动态创建框

HTML:

<div id="topDiv"></div>

<div id="leftDiv"></div>

<div id="rightDiv"></div>

<div id="bottomDiv"></div>
#topDiv div{
    float : left;
    padding:5px;
    width:50px;
    height:50px;
}


#leftDiv div{
   float : left;
    padding:5px;
    width:50px;
    height:50px;
}

#rightDiv div{
    float : right;
    padding:5px;
    width:50px;
    height:50px;
} 

#bottomDiv div{
    float : left;
    padding:5px;
    width:50px;
    height:50px;
}

#topDiv{
    padding-left : 33%;
}
#leftDiv{
    padding-top : 30%;
}
#bottomDiv{
    padding-top : 68%;
    padding-left : 33%;
}
#rightDiv{
    margin-top : -30%;
}

.changedFont{
    font-size : 20px;
}
$(document).ready(function(){
//First declare an array of colors that will also indicate the number of boxes.
var colorArray = new Array("red", "green", "blue");

//Execute a loop to create the boxes styling them properly
for(var i = 1; i <= colorArray.length ; i++){
    $("#topDiv").append("<div id=Box" + i + "></div>");
    $("#Box"+ i).css("background-color", colorArray[i-1]);
    $("#Box"+i).text("Box" + i);

    $("#leftDiv").append("<div id=Box" + i+1 + "></div>");
    $("#Box"+ i+1).css("background-color", colorArray[i-1]);
    $("#Box"+ i+1).text("Box" + i+1);

    $("#rightDiv").append("<div id=Box" + i+2 + "></div>");
    $("#Box"+ i+2).css("background-color", colorArray[i-1]);
    $("#Box"+ i+2).text("Box" + i+2);

    $("#bottomDiv").append("<div id=Box" + i+3 + "></div>");
    $("#Box"+ i+3).css("background-color", colorArray[i-1]);
    $("#Box"+i+3).text("Box" + i+3);       
}

   //Define the handler for onclick events 
    $("#topDiv").children().click(function(){
        $("#topDiv").children().eq(1).css("background-color", $(this).css("background-color"));        
        $("#topDiv").children().eq(1).addClass("changedFont");
    });

     $("#leftDiv").children().click(function(){
        $("#leftDiv").children().eq(1).css("background-color", $(this).css("background-color"));
        $("#leftDiv").children().eq(1).addClass("changedFont");
    });

    $("#rightDiv").children().click(function(){
        $("#rightDiv").children().eq(1).css("background-color", $(this).css("background-color"));
        $("#rightDiv").children().eq(1).addClass("changedFont");
    });

    $("#bottomDiv").children().click(function(){
        $("#bottomDiv").children().eq(1).css("background-color", $(this).css("background-color"));
        $("#bottomDiv").children().eq(1).addClass("changedFont");
    }); 
});
jQuery:

<div id="topDiv"></div>

<div id="leftDiv"></div>

<div id="rightDiv"></div>

<div id="bottomDiv"></div>
#topDiv div{
    float : left;
    padding:5px;
    width:50px;
    height:50px;
}


#leftDiv div{
   float : left;
    padding:5px;
    width:50px;
    height:50px;
}

#rightDiv div{
    float : right;
    padding:5px;
    width:50px;
    height:50px;
} 

#bottomDiv div{
    float : left;
    padding:5px;
    width:50px;
    height:50px;
}

#topDiv{
    padding-left : 33%;
}
#leftDiv{
    padding-top : 30%;
}
#bottomDiv{
    padding-top : 68%;
    padding-left : 33%;
}
#rightDiv{
    margin-top : -30%;
}

.changedFont{
    font-size : 20px;
}
$(document).ready(function(){
//First declare an array of colors that will also indicate the number of boxes.
var colorArray = new Array("red", "green", "blue");

//Execute a loop to create the boxes styling them properly
for(var i = 1; i <= colorArray.length ; i++){
    $("#topDiv").append("<div id=Box" + i + "></div>");
    $("#Box"+ i).css("background-color", colorArray[i-1]);
    $("#Box"+i).text("Box" + i);

    $("#leftDiv").append("<div id=Box" + i+1 + "></div>");
    $("#Box"+ i+1).css("background-color", colorArray[i-1]);
    $("#Box"+ i+1).text("Box" + i+1);

    $("#rightDiv").append("<div id=Box" + i+2 + "></div>");
    $("#Box"+ i+2).css("background-color", colorArray[i-1]);
    $("#Box"+ i+2).text("Box" + i+2);

    $("#bottomDiv").append("<div id=Box" + i+3 + "></div>");
    $("#Box"+ i+3).css("background-color", colorArray[i-1]);
    $("#Box"+i+3).text("Box" + i+3);       
}

   //Define the handler for onclick events 
    $("#topDiv").children().click(function(){
        $("#topDiv").children().eq(1).css("background-color", $(this).css("background-color"));        
        $("#topDiv").children().eq(1).addClass("changedFont");
    });

     $("#leftDiv").children().click(function(){
        $("#leftDiv").children().eq(1).css("background-color", $(this).css("background-color"));
        $("#leftDiv").children().eq(1).addClass("changedFont");
    });

    $("#rightDiv").children().click(function(){
        $("#rightDiv").children().eq(1).css("background-color", $(this).css("background-color"));
        $("#rightDiv").children().eq(1).addClass("changedFont");
    });

    $("#bottomDiv").children().click(function(){
        $("#bottomDiv").children().eq(1).css("background-color", $(this).css("background-color"));
        $("#bottomDiv").children().eq(1).addClass("changedFont");
    }); 
});
$(文档).ready(函数(){
//首先声明一个颜色数组,该数组还将指示框的数量。
var colorArray=新数组(“红色”、“绿色”、“蓝色”);
//执行循环以创建框,并正确设置它们的样式

对于(var i=1;i)这里有一个问题吗?中间框的背景色是否会随着已单击的其他div背景色而改变,或者只有字体会改变?您可以试试这个。类似于您的描述。这里完全回答了重复的问题。