getElementbyId问题

时间:2009-11-01 02:05:57

标签: javascript getelementbyid

我遇到了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被设置为null。谁能理论化为什么?

2 个答案:

答案 0 :(得分:3)

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

  1. 您传递给show_links函数的值是变量test。这等于undefined所以它不会匹配任何东西。
  2. 您尝试通过 id 查找的元素没有ID。它只有一个类。
  3. 你需要给你想要匹配id的元素,并传递一个字符串而不是一个未定义的值。

    然后是较小的问题。

    1. 您正在测试内联显示样式属性,但默认情况下不进行设置。根据经验,最好是改变className属性,并在样式表中定义样式。
    2. 您使用的是javascript伪URI而不是progressive enhancement
    3. 你有comments wrapped around the inside of the script最佳,这些都是毫无意义的。
    4. 您正在调整inlinenone之间的div,但div的默认显示值为block。有理由有div样式的内联,但大多数时候你应该使用另一个元素。

答案 1 :(得分:0)

javascript:show_links(test);

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

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

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