0

如果可能,我想在没有 documentGetElementById 的情况下更改显示,但以下内容不起作用。html

<a href="javascript:void();" onclick="toggleFaq('1')">Instructions</a><div id="showfaq1" style="display:none;">Open Box.  Remove device. </div>

javascript:

function toggleFaq(faqid) {
//alert(faqid);
var divname = "showfaq"+faqid;
//alert(divname);
divname.style.display="block";
}

谁能告诉我我做错了什么?

谢谢你。

4

3 回答 3

3

我不明白你为什么不想使用getElementById,但是......

如果你有这样的元素

<a href="javascript:void();" onclick="toggleFaq('1')">Instructions</a>
<div id="showfaq1" style="display:none;">Open Box.  Remove device. </div>
<a href="javascript:void();" onclick="toggleFaq('2')">Instructions</a>
<div id="showfaq2" style="display:none;">Open Box.  Remove device. </div>
...
<a href="javascript:void();" onclick="toggleFaq('N')">Instructions</a>
<div id="showfaqN" style="display:none;">Open Box.  Remove device. </div>

您可以使用

<a href="javascript:void();" onclick="toggleFaq(this)">Instructions</a>

function toggleFaq(obj) {
   obj.nextElementSibling.style.display = 'block';
}
于 2013-09-20T11:43:51.063 回答
1

在您的代码divname中是一个包含字符串“showfaq1”的变量,它没有style属性。

要更改元素的样式,您需要对该元素的引用,您可以使用以下方法获取document.getElementById(divname)

function toggleFaq(faqid) {
    //alert(faqid);
    var divname = "showfaq"+faqid;
    //alert(divname);
    document.getElementById(divname).style.display="block";
}

如果你对 过敏document.getElementById,你可以使用document.querySelector('[id="' + divname +'"]');,但它的支持不如前者,而且速度较慢。

于 2013-09-20T11:37:04.717 回答
0

发布一个单独的答案,因为它对我之前的答案没有影响。但是您可以完全不使用 JS 来制作基本机制,然后在需要时使用基于 JS 的解决方案之一在损坏的浏览器中修复它:

HTML

<a href="#showfaq1">Instructions</a>
<div id="showfaq1">Open Box.  Remove device. </div>

CSS

a + div { display:none; }
a:focus + div, a + div:target { display:block; }

演示

于 2013-09-20T12:26:11.500 回答