JavaScript错误未定义对象,尽管对象存在

时间:2012-01-25 16:56:41

标签: javascript

我有以下代码

<!DOCTYPE HTML>
<html>
    <head>
    </head>
    <body>
        <div class="full-details-box" name="full_details_box" id="full-details-box"></div>
        <hr />
        <script type='text/javascript'>
        function show_3136(){
            document.full_details_box.style.display='block';
        }
        show_3136();
        </script>
    </body>
</html>

我收到错误:window.document.full_details_box未定义

我收到该行的错误:

document.full_details_box.style.display='block';

但我确实有一个名为<div>的{​​{1}}元素,为什么会出错呢?

6 个答案:

答案 0 :(得分:0)

不要将name属性用于div。它甚至不存在。使用id,和:

document.getElementById('full-details-box')...

答案 1 :(得分:0)

function show_3136(){
     document.getElementById('full_details_box').style.display='block';
}

答案 2 :(得分:0)

要访问此元素,请使用getElementById

function show_3136() {
    document.getElementById("full-details-box").style.display = "block";
}

答案 3 :(得分:0)

你可以做一个

document.getElementById("full-details-box").style.display='block';

答案 4 :(得分:0)

只是为了增加您的困惑 - 您可能一直在考虑表单字段 所有这些都可以在表单字段上工作(只有在表单标记中包装字段时才是第一个)

<html>
<head>
    <script type='text/javascript'>
    function showFormField(){
        document.forms[0].full_details_boxName.style.display='block';
        // or document.forms[0].elements["full_details_boxName"].style.display='block';
    }
    function showNamedField(){
        document.getElementsByName("full_details_boxName")[0].style.display='block';
    }
    function showFieldById(){
        document.getElementsById("full_details_boxID").style.display='block';
    }
    function showFieldByClassName(){ // does not work in all IE browsers
        document.getElementsByClassName("full_details_boxCLASS")[0].style.display='block';
    }
    </script>
</head>
<body>
<form>
  <input class="full-details-boxCLASS" name="full_details_boxName" id="full-details-boxID"/>
</form>
</body>
</html>

对于DIV,您将使用ID或CLASS,但不使用名称

答案 5 :(得分:0)

HTML:

<div id="full-details-box">
    Just some test content
</div>
<hr />

CSS:

div#full-details-box { 
    display:none;
}

JS:

function show_3136(){
    document.getElementById("full-details-box").style.display = "block";
}
show_3136();

对于一个工作示例,see jsFiddle