为什么我会得到一个SCRIPT5007:SCRIPT5007:无法在内部设置未定义或空引用的属性“禁用”

时间:2018-10-13 20:26:41

标签: javascript internet-explorer

为什么在Internet Explorer中设置禁用的属性无效?在Internet Explorer中,它输出一个错误。在其他浏览器中,它确实可以工作。该错误发生在第6行和第7行。其输出的错误如下所示:

  

SCRIPT5007:SCRIPT5007:无法设置未定义或空引用的属性“禁用”。 sql.html(6,1)

这是我的代码

<html>
    <head>
        <script>
            if (!window.openDatabase){
                alert("Sorry your browser dosent support WebSQL")
                document.getElementById("input").disabled = true
                document.getElementById("button").disabled = true
            } else {
                var db = openDatabase("mydb", 1.0, "mydb", 2*1024*1024)
                function execute(){
                    db.transaction(function (t){
                        t.executeSql(document.getElementById("input").value)
                        console.log(document.getElementById("input").value)
                    })
                }
            }
        </script>
    </head>
    <body id="body">
        <textarea id="input"></textarea>
        <button onclick="execute()" id="button">Execute SQL</button>
    </body>
</html>

但是在控制台的第6行和第7行键入代码确实可以。 我的代码有什么问题?

1 个答案:

答案 0 :(得分:0)

根据您的代码,从上到下加载的页面,当您使用getElementById方法获取textarea和button时,它们不会被加载。因此,它找不到这些控件,并且将显示“无法设置未定义或空引用的属性'disabled'”错误。

您可以将代码放入onload事件中。当已加载对象时,将发生onload事件。

请如下修改您的代码:

<head>
    <script>
        function pageload() { 
            if (!window.openDatabase) {
                alert("Sorry your browser dosent support WebSQL")
                document.getElementById("input").disabled = true
                document.getElementById("button").disabled = true
            } else {
                var db = openDatabase("mydb", 1.0, "mydb", 2 * 1024 * 1024)
                function execute() {
                    db.transaction(function (t) {
                        t.executeSql(document.getElementById("input").value)
                        console.log(document.getElementById("input").value)
                    })
                }
            }
        }
    </script>
</head>
<body id="body" onload="pageload();">
    <textarea id="input"></textarea>
    <button onclick="execute()" id="button">Execute SQL</button>
</body>