我有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;
}
}
}
答案 0 :(得分:0)
c[i].id = "vis"
正在设置ID。赋值的计算结果为true
,因此代码总是在循环第一次进入if
主体。这就是为什么i
总是0
。
您想要c[i].id === "vis"
(或至少c[i].id == "vis"
)。