2009-11-01 48 views
0

我有如下用的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正被设置为空。任何人都可以为什么理论化?

+0

把测试放在引号 – 2009-11-01 02:21:30

回答

3

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

  1. 您传递给show_links函数的值是变量test。这相当于undefined,所以它不会匹配任何东西。
  2. 您试图通过其ID找到的元素没有ID。它只有一个班。

你需要给你试图匹配一个ID的元素,并通过一个,而不是一个未定义的值。

然后是较小的问题。

  1. 您正在测试内联显示样式属性,但不是默认设置它。根据经验,最好旋转className属性,并在样式表中定义样式。
  2. 您正在使用JavaScript伪URI而不是progressive enhancement
  3. 您有comments wrapped around the inside of the script。在最好,这些是毫无意义的。
  4. 您正在编辑inlinenone之间的div,但div的默认显示值为block。有理由有内联格子,但大多数时候你应该使用另一个元素。
+0

+1。即使不考虑渐进式增强的好处,“javascript:”伪URI在他们出生的那一天被破坏和过时,永远不会在页面中使用。永远。 – bobince 2009-11-01 02:54:56

0
javascript:show_links(test); 

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

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

此行中没有标识为test的元素。使用正确的属性id