簡體   English   中英

為什么我不能更改 html 元素的左屬性值?

[英]Why I cannot change the left attribute value for my html element?

單擊我制作的指針時,我正在嘗試更改我的 img-list 的左值。 更改左值后,我可以切換到另一個 img。

我的 img-list 有 state 絕對 position。 而且,當我點擊指針時,左邊的值發生了變化,圖像確實變成了另一個圖像,但只有一秒鍾。 一秒鍾后,它又變回了原始圖像,當我提醒查看 img_list.style.left 的當前值時,它顯示了正確的值。 但是左邊的值仍然保持相同的 0 值。 我不確定這里出了什么問題,請有人給我一些提示。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <link rel="stylesheet" href="../reset.css">
    <style>
        .wrapper{
            width: 370px;
            height: 350px;
            background-color: #bfa;
            margin: 50px auto;
            padding:10px 0;
            overflow: hidden;
            position: relative;
        }
        .img-list{
            position: absolute;
            left: 0;
        }
        .img-list li{
            float:left; 
            margin:0 10px;
        }
        img{
            width:350px;
            height: 350px;
        }
        .pointer{
            position: absolute;
            bottom: 10px;
            left: 50%;
            transform: translateX(-50%);
        }
        .pointer a{
            float: left; 
            width: 15px;
            height: 15px;
            background-color: red;
            opacity: 0.5;
        }
        .pointer a:hover{
            background-color: grey;
        }
        .pointer a:not(:first-child){
            margin-left: 10px;
        }
    </style>
    <script type="text/javascript">
        window.onload = function () {
            var img_list = document.getElementById("imglist");
            var img = img_list.getElementsByTagName("img");
            img_list.style.width = 370 * img.length + "px";
            console.log(img_list.style.width);

            var pointer = document.getElementsByClassName("pointer")[0];
            var allA = pointer.getElementsByTagName("a");

            for (var i = 0; i < allA.length; i++) {
                allA[i].index = i;
                allA[i].onclick = function () {
                    var value = this.index * (-370) + "px";
                    img_list.style.left = value;
                    alert(img_list.style.left);
                };
            }
        }
    </script>
</head>
<body>
    <div class="wrapper">
        <ul class="img-list" id = "imglist">
        
            <li><a href=""><img src="./pics/01/d56283cb25574af8.jpg!cc_320x320.webp" alt=""></a></li>
        
            <li><a href=""><img src="./pics/03/eb1b74d5j00rmlivy000jc000go00b4c.jpeg" alt=""></a></li>
            <li><a href=""><img src="./pics/01/fef85dc4d0992e62.jpg!cc_320x320.webp" alt=""></a></li>
            <li><a href=""><img src="./pics/01/3bc798a7387a216d.jpg!cc_320x320.webp" alt=""></a></li>
        </ul>
        <div class="pointer">
            <a href=""></a>
            <a href=""></a>
            <a href=""></a>
            <a href=""></a>
        </div>
    </div>
</body>
</html>

似乎每次單擊時具有空href屬性的a元素都會刷新頁面,只需將其刪除即可:

<div class="pointer">
   <a></a>
   <a></a>
   <a></a>
   <a></a>
</div>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM