【问题标题】:Javascript dynamic pagesJavascript 动态页面
【发布时间】:2017-05-16 03:21:03
【问题描述】:

小背景:该站点用于大学作业,我们不允许使用 3rd 方库,例如 bootstrap 等。我以为我有一个解决方案,但我只能让它为 2 个按钮工作(显示或隐藏相反的一个)但不是多个。我至少会有 10 个按钮。

我曾尝试研究堆栈溢出,但找不到解决方案。这是我的 HTML+CSS。主页是默认页面,单击按钮时,其余页面应在下面的空白区域中可见。这是一个产品页面。

JSFIDDLE:https://jsfiddle.net/33n7yb5h/

任何帮助都将不胜感激,它不需要是书面解决方案,只需将我指向正确的方向即可...我几乎没有 JavaScript 知识,所以我不完全确定我应该是什么首先谷歌搜索......

<html>
    <head>
        <title>Design</title>
        <link rel="stylesheet" type="text/css" href="css/store.css">
        <script type="text/javascript" src="javascript/js.js"></script>
        <script src="http://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
    </head>

    <body>
        <ul>
            <li id="left"><a href="#home">Company</a></li>
            <li id="left"><a href="#home">Sales</a></li>
            <li id="left"><a href="#home">About</a></li>
            <li id="left"><a href="#home">Contact</a></li>
            <li id="right1"><a href="">Cart</a></li>
            <li id="right2" onclick="myFunction()"><a href="">Geolocate</a></li>
        </ul>

        <dialog id="myDialog">Your IP address: <?php echo $_SERVER['REMOTE_ADDR']; ?></dialog>

        <div id="items">
            <ul>
                <li id="left"><a href="">Home</a></li>
                <li id="Cars"><a href="">Super Cars</a></li>
                <li id="Cars"><a href="">Topic 2</a></li>
            </ul>

            <div id="homepage">
                <span><p> Welcome to the store</p></span>
            </div>

            <div id="showCars">
                <div class="productBox">
                    <div class="productPicture">
                    </div>
                </div>
            </div>
        </div>

    </body>
</html>

ul{list-style-type: none; margin: 0; padding: 0; overflow: hidden; background-color: #363377; border-bottom: 1px solid white;}
li a{display: inline-block; color: white; text-align: center; padding: 14px 16px; text-decoration: none;}
#left, #Cars{float: left; border-right:solid 1px #fff;}
#right1, #right2{float: right;}
#left:hover, #right:hover, #Cars:hover{background-color: #555;}

body{
    margin: 0px;
    padding: 0px;
    font-family: tahoma;
    background-image: "/img/bg.jpg";
}

p{
    text-align: center;
}

#items{
    display: inline-block;
    border: 1px solid black;
    padding: 10px;
    margin-top: 25px;
    margin-left: 225px;
    margin-right: 225px;
    position: absolute;
    width: 80%;
    height: 80%;
    -moz-box-shadow: 1px 2px 4px rgba(0, 0, 0,0.5);
    -webkit-box-shadow: 1px 2px 4px rgba(0, 0, 0, .5);
    box-shadow: 1px 2px 4px rgba(0, 0, 0, .5);
    background: white;
    overflow: hidden;
}

.productBox{
    border: 2px solid black;
    width: 200px;
    height: 300px;
    margin-top: 5px;
    text-align: center;
}

.productPicture{
    border: 1px solid black;
    width: 90%;
    height: 150px;
    margin: 0 auto;
    margin-top: 5px;
    padding: 5px;
    display: inline-block;
}

#showCars{
    display: none;
}

【问题讨论】:

  • 我想指出您实际上是在使用第三方库。 jQuery != vanilla JS
  • 我的意思是像 bootstrap 这样的东西,我们被允许 JQ

标签: javascript jquery html css dynamic


【解决方案1】:

如果我正确理解您的需要,这里有一些伪代码:有很多方法可以做到这一点,我没有太多工作要做,所以这里只是 1 个示例。

<div>
<button onclick="cars()" value="show cars"></button> <!-- if they click this button call the function cars() -->
<button onclick="boats()" value="show boats"></button>
    <ul>
       <li id=IDname0></li>
       <li id=IDname1></li>
       <li id=IDname2></li>
    </ul>


</div>




<script>

var cars = ["Saab", "Volvo", "BMW"]; //create an array of values you want to load into your tags
var boats = ["Fishing", "Raft", "Other"];

var x = 0;

Function cars()
{
// for each element in cars,
   for ( x=0; x<cars.length; x++ )
   {
//acquire the elemt by the ID name, and REPLACE the inner HTML with the value at array cars element x. if you want to add to the inner HTML, use += instead of just =
      Document.getElementById('IDname'+x).innerHtml = cars[x]; // will acquire 'IDname0' , 'IDname1', etc.. each tag with an ID of that name ( from your <li> above
   }
}

Function boats()
{
   for ( x=0; x<cars.length; x++ )
   {
      Document.getElementById('IDname'+x).innerHtml = boats[x];
   }
}



</script>

【讨论】:

  • 嘿,感谢您抽出宝贵时间回复,您能否评论一下代码,以便我知道我在寻找什么?此切换是否会显示带有 ID 车辆的 div,因此只有汽车出现,然后如果单击船,则汽车被移除并出现船?
  • 当然!我为 cars() 函数添加了 cmets。船是完全相同的逻辑,除了船。希望这对您有所帮助!
【解决方案2】:

您可以使用query string,然后将按钮链接到查询字符串参数,该参数检查字符串并定义每个页面/按钮的作用。这将允许您使页面 html css 等几乎相同,除了在按钮单击时更改的部分。
许多网站都这样做。
例如:https://www.etsy.com/ca/search?q=wallet

【讨论】:

    【解决方案3】:

    我在这里找到了一个解决方案:http://www.w3schools.com/howto/howto_js_tabs.asp 供其他正在寻找相同东西的人使用!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多