1

我创建了一个简单的展开/隐藏测试脚本:

<html>
<head>
<script type="type/javascript"><!--
function showHide(elementid){
    if (document.getElementById(elementid).style.display == 'none'){
        document.getElementById(elementid).style.display = '';
    } else {
        document.getElementById(elementid).style.display = 'none';
    }
}
//-->
</script>
</head>
<body>

<div><a href="javascript:showHide('div_1035677');">more...</a></div>

<div id="div_1035677" style="display:none">
HIDDEN CONTENT
</div>
</body>
</html>

我收到一条我无法理解的错误消息(第一行预期的对象)。我在上面的代码中没有看到任何错误。:-(

4

5 回答 5

11

type="type/javascript"应该是type="text/javascript"

于 2011-01-01T16:06:07.857 回答
5

更改type/javascripttext/javascript

完整示例:

<html>
<head>
  <script type="text/javascript" charset="utf-8">
  function showHide(elementid){
    if (document.getElementById(elementid).style.display == 'none'){
      document.getElementById(elementid).style.display = '';
    } else {
      document.getElementById(elementid).style.display = 'none';
    }
  }
  </script>
</head>
<body>
  <div><a href="javascript:showHide('div_1035677');">more...</a></div>
  <div id="div_1035677" style="display:none">
    HIDDEN CONTENT
  </div>
</body>
</html>
于 2011-01-01T16:06:43.047 回答
2

您的脚本标签的 mime 类型错误,应该text/javascript不是type/javascript.

浏览器将忽略具有未知 mime 类型的脚本内容。

实际上,该type属性不是必需的。但是,如果您要添加它,它应该是text/javascript所有 3 个主要浏览器都认可的唯一值。按照标准,javascript 的正确 mime 类型是application/javascript但不被 IE 识别。

<script type="text/javascript">
    function showHide(elementid){
        if (document.getElementById(elementid).style.display == 'none'){
            document.getElementById(elementid).style.display = '';
        } else {
            document.getElementById(elementid).style.display = 'none';
        }
    }
</script>

进一步阅读
我应该在我的 SCRIPT 标签中包含 type="text/javascript" 吗?

于 2011-01-01T16:10:55.783 回答
1

是的,正如上面其他人所说,您应该使用 text/javascript,而不是 type/javascript。此外,使用 CDATA 块将防止 HTML/XML 验证器(例如W3C HTML 验证器)将 JavaScript 标记为不正确。

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8" />
        <script type="text/javascript">
        //<![CDATA[
        function showHide(elementid){
            if (document.getElementById(elementid).style.display == 'none'){
                document.getElementById(elementid).style.display = '';
            } else {
                document.getElementById(elementid).style.display = 'none';
            }
        }
        //]]>
        </script>
    </head>

    <body>
        <div><a href="javascript:showHide('div_1035677');">more...</a></div>
        <div id="div_1035677" style="display:none;">
        HIDDEN CONTENT
        </div>
    </body>
</html>
于 2011-01-01T17:50:36.060 回答
0

如果您已将类型设置为text/javascript但仍无法正常工作,则可能是因为该元素未加载到 DOM 中。有两种方法可以解决问题:

  1. 像这样移动 div 下的 Javascript 代码:

    <div id="div_1035677" style="display:none">
      HIDDEN CONTENT
    </div>
    <script type="text/javascript">
    

  2. 将代码包装在 onload 事件处理程序中:

    函数显示隐藏(){
      if (this.style.display == 'none'){
        this.style.display = '';
      } 别的 {
        this.style.display = '无';
      }
    }
    
    
    window.onload = 函数(){
      document.getElementById('link').onclick = showHide;
    };
    
于 2011-01-01T16:07:28.810 回答