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

JavaScript error undefined object although object exist

本文关键字:对象 存在 未定义 JavaScript 错误      更新时间:2023-09-26

我有以下代码

<!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';

但我确实有一个名为full_details_box<div>元素,那么为什么会出现错误呢?

不要对div使用name属性。它根本不存在。使用id和:

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

要访问此元素,请使用getElementById

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

您可以进行

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

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

<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,但不使用名称

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();

有关工作示例,请参阅jsFiddle