0

我在使用 getElementbyId 时遇到问题,如下所示:

<script type="text/javascript">
<!--
function show_links(locale) {

        var box = document.getElementById(locale);

        if(box.style.display == "none") { 
            box.style.display = "inline";
        } 
         else { 

            box.style.display = "none";
        }

    }
    //-->
</script>

<div class="link"><strong><a href="javascript:show_links(test);">Test</a></strong></div>
<div class="test"> Blah blah blah. This content comes and goes. </div>

所以你有代码。当我单击“测试”链接时,它应该隐藏“等等等等文字”。再次单击时,它应该显示。但是,我有一个奇怪的问题。我通过调试器处理了代码,似乎该行var box = document.getElementById(locale);无法正常工作。box被设置为空。谁能理论化为什么?

4

2 回答 2

3

你有几个问题。首先是关键的:

  1. 您传递给show_links函数的值是变量test。这等于undefined所以它不会匹配任何东西。
  2. 您尝试通过其id查找的元素没有 id。它只有一个类。

您需要为您尝试匹配的元素提供一个 id 并传递一个字符串而不是未定义的值。

然后是较小的问题。

  1. 您正在测试内联显示样式属性,但默认情况下您没有设置它。根据经验,最好调整className属性,并在样式表中定义您的样式。
  2. 您正在使用 javascript 伪 URI 而不是渐进增强
  3. 在脚本内部有注释。充其量这些都是没有意义的。
  4. inline您在和之间摆弄一个 div none,但 div 的默认显示值为block. 有一个 div 样式内联的理由,但大多数时候你应该使用另一个元素。
于 2009-11-01T02:09:04.547 回答
0
javascript:show_links(test);

test是一个未知的标识符。你在哪里定义的?你的意思是喂一个字符串?

<div class="test"> Blah blah blah. This content comes and goes. </div>

test此行中没有 id 的元素。使用适当的属性id

于 2009-11-01T02:08:20.260 回答