为什么在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行键入代码确实可以。 我的代码有什么问题?
答案 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>