-1

我有 2 个 js 函数,在函数显示中我想获取当前可见元素的索引,但它总是警告 0。它似乎没有检查函数navigate_right()是否更改了 p 元素的 id。那么如何修改它以使其正常运行呢?

<html>
    <style type="text/css">
        p {
            border:1px solid black;
            width:100px;
            height:30px;
            display:none;
        }
    </style>

    <p style="display:block" id="p">some text1</p>
    <p>some text2</p>
    <p>some text3</p>
    <p>some text4</p>
    <p>some text5</p>
    <input type="button" value="left" onclick="show()" />
    <input type="button" value="right" onclick="navigate_right()" id="right" />

    <script>
        var p = document.getElementsByTagName("p");

        function navigate_right() {
            for (var i = 1; i < p.length; i++) {
                if (p[i - 1].style.display == 'block') {
                    p[i].style.display = 'block';
                    p[i - 1].style.display = 'none';
                    return;
                }
            }
        }

        function show() {
            var c = document.getElementsByTagName("p");
            var t;
            for (var i = 0; i < p.length; i++) {
                if (c[i].id = "vis") {
                    t = i;
                    alert(t);
                    return;
                }
            }
        }
    </script>    
</html>

编辑!应该有警报 t;t 是当前可见段落的索引 现在它可以工作了!我已经纠正了一些愚蠢的错误。但是还是感谢大家的帮助

var p = document.getElementsByTagName("p");
function navigate_right() {
    for(var i = 1; i <p.length; i++){ 
        if(p[i-1].style.display == 'block') {
            p[i].style.display = 'block';
            p[i].id = "vis";
            p[i-1].style.display ='none';
            p[i-1].removeAttribute("id");
            return;
        }
    }
}
function show(){
    var c = document.getElementsByTagName("p");
    var t;
    for (var i = 0; i < p.length; i++) {
        if(c[i].id == "vis") { 
            t = i;
            alert(t);
            return;
        }
    }
}
4

1 回答 1

0

c[i].id = "vis"正在设置 ID。赋值计算结果为,因此代码总是在循环中第一次true进入正文。if这就是为什么i总是0.

你想要c[i].id === "vis"(或至少c[i].id == "vis")。

于 2013-06-08T18:52:52.393 回答