Javascript: Object doesn't support this action error with onclick="status()"
Javascript: Object doesn't support this action error with onclick="status()"
我在 IE11 中尝试调用在单击单选按钮时执行的函数时出现错误。
这是单选按钮的 html:
<input type="radio" name="filter" value="status" onclick="status()" checked>
函数定义在页面底部:
function status(){
try{
var td = document.getElementById("check1td");
td.innerHTML = "Current (CURR)<input type=\"checkbox\" name=\"skustat1\" value=\"CURR\" checked>";
td = document.getElementById("check2td");
td.innerHTML = "Test (TEST)<input type=\"checkbox\" name=\"skustat2\" value=\"TEST\" checked>";
td = document.getElementById("check3td");
td.innerHTML = "Stocking Internet (SINET)<input type=\"checkbox\" name=\"skustat3\" value=\"SINET\" checked>";
td = document.getElementById("check4td");
td.innerHTML = "Sellable Display (SLDSP)<input type=\"checkbox\" name=\"skustat4\" value=\"SLDSP\" checked>";
}
catch(err){
alert(err.message);
}
}
我在同级单选按钮上有一个类似定义的函数,它被正确调用。所以,我的问题是,status()
是 IE 不会响应的保留 javascript 函数吗?而且,如果是这样,为什么这在其他浏览器中有效?
编辑:将 Status() 更改为 status() 以反映它在我的代码中的实际显示方式。
UPDATE1:似乎它在首次在 IE 中打开浏览器时也能正常工作,可能是缓存问题?
您不能将 status
用作 chrome 中的变量(可能其他浏览器也是如此)。
var internal = [];
for(var b in window) {
if(window.hasOwnProperty(b)) internal.push(b);
}
console.log(internal);
[... "status", ...]
尝试将其重命名为 Status()
或其他名称。此代码有效:http://jsfiddle.net/hLmbk6bz/1
像这样添加事件侦听器:
document.getElementById("clickMe").addEventListener("click", status);
参见fiddle:http://jsfiddle.net/bun4g2d0/4/
HTML
<input id="clickMe" type="radio" name="filter" value="status" onclick="status()" checked>
<div id="check1td"></div>
<div id="check2td"></div>
<div id="check3td"></div>
<div id="check4td"></div>
javascript
document.getElementById("clickMe").addEventListener("click", status);
function status(){
try{
var td = document.getElementById("check1td");
td.innerHTML = "Current (CURR)<input type=\"checkbox\" name=\"skustat1\" value=\"CURR\" checked>";
td = document.getElementById("check2td");
td.innerHTML = "Test (TEST)<input type=\"checkbox\" name=\"skustat2\" value=\"TEST\" checked>";
td = document.getElementById("check3td");
td.innerHTML = "Stocking Internet (SINET)<input type=\"checkbox\" name=\"skustat3\" value=\"SINET\" checked>";
td = document.getElementById("check4td");
td.innerHTML = "Sellable Display (SLDSP)<input type=\"checkbox\" name=\"skustat4\" value=\"SLDSP\" checked>";
}
catch(err){
alert(err.message);
}
}
绝对是 "status" 的名字。这是两者之间的唯一区别:
http://jsfiddle.net/CrossEye/ux636prr
还有这个:
http://jsfiddle.net/CrossEye/ux636prr/1/
但是第二个,将 "status" 更改为 "Status" 工作正常。
和强制性代码 link,尽管 Fiddle 使用与问题相同的代码 :smile: :
<input type="radio" name="filter" value="status" onclick="status()" checked>
我的回答并不直接适用于这种情况,但我遇到了由一个非常相似和相关的问题引起的完全相同的错误。我的函数名称不是保留字,而是与输入收音机的 "name" 属性完全相同的名称。
<script>
function LoginType()
{
// Code here never called because the function name is the same as my input name...
}
</script>
<input type="radio" name"LoginType" value="Windows" onclick="LoginType();" />
所以我不得不像这样更改我的名字:
<input type="radio" name"radio_LoginType" value="Windows" onclick="LoginType();" />
我在 IE11 中尝试调用在单击单选按钮时执行的函数时出现错误。
这是单选按钮的 html:
<input type="radio" name="filter" value="status" onclick="status()" checked>
函数定义在页面底部:
function status(){
try{
var td = document.getElementById("check1td");
td.innerHTML = "Current (CURR)<input type=\"checkbox\" name=\"skustat1\" value=\"CURR\" checked>";
td = document.getElementById("check2td");
td.innerHTML = "Test (TEST)<input type=\"checkbox\" name=\"skustat2\" value=\"TEST\" checked>";
td = document.getElementById("check3td");
td.innerHTML = "Stocking Internet (SINET)<input type=\"checkbox\" name=\"skustat3\" value=\"SINET\" checked>";
td = document.getElementById("check4td");
td.innerHTML = "Sellable Display (SLDSP)<input type=\"checkbox\" name=\"skustat4\" value=\"SLDSP\" checked>";
}
catch(err){
alert(err.message);
}
}
我在同级单选按钮上有一个类似定义的函数,它被正确调用。所以,我的问题是,status()
是 IE 不会响应的保留 javascript 函数吗?而且,如果是这样,为什么这在其他浏览器中有效?
编辑:将 Status() 更改为 status() 以反映它在我的代码中的实际显示方式。
UPDATE1:似乎它在首次在 IE 中打开浏览器时也能正常工作,可能是缓存问题?
您不能将 status
用作 chrome 中的变量(可能其他浏览器也是如此)。
var internal = [];
for(var b in window) {
if(window.hasOwnProperty(b)) internal.push(b);
}
console.log(internal);
[... "status", ...]
尝试将其重命名为 Status()
或其他名称。此代码有效:http://jsfiddle.net/hLmbk6bz/1
像这样添加事件侦听器:
document.getElementById("clickMe").addEventListener("click", status);
参见fiddle:http://jsfiddle.net/bun4g2d0/4/
HTML
<input id="clickMe" type="radio" name="filter" value="status" onclick="status()" checked>
<div id="check1td"></div>
<div id="check2td"></div>
<div id="check3td"></div>
<div id="check4td"></div>
javascript
document.getElementById("clickMe").addEventListener("click", status);
function status(){
try{
var td = document.getElementById("check1td");
td.innerHTML = "Current (CURR)<input type=\"checkbox\" name=\"skustat1\" value=\"CURR\" checked>";
td = document.getElementById("check2td");
td.innerHTML = "Test (TEST)<input type=\"checkbox\" name=\"skustat2\" value=\"TEST\" checked>";
td = document.getElementById("check3td");
td.innerHTML = "Stocking Internet (SINET)<input type=\"checkbox\" name=\"skustat3\" value=\"SINET\" checked>";
td = document.getElementById("check4td");
td.innerHTML = "Sellable Display (SLDSP)<input type=\"checkbox\" name=\"skustat4\" value=\"SLDSP\" checked>";
}
catch(err){
alert(err.message);
}
}
绝对是 "status" 的名字。这是两者之间的唯一区别:
http://jsfiddle.net/CrossEye/ux636prr
还有这个:
http://jsfiddle.net/CrossEye/ux636prr/1/
但是第二个,将 "status" 更改为 "Status" 工作正常。
和强制性代码 link,尽管 Fiddle 使用与问题相同的代码 :smile: :
<input type="radio" name="filter" value="status" onclick="status()" checked>
我的回答并不直接适用于这种情况,但我遇到了由一个非常相似和相关的问题引起的完全相同的错误。我的函数名称不是保留字,而是与输入收音机的 "name" 属性完全相同的名称。
<script>
function LoginType()
{
// Code here never called because the function name is the same as my input name...
}
</script>
<input type="radio" name"LoginType" value="Windows" onclick="LoginType();" />
所以我不得不像这样更改我的名字:
<input type="radio" name"radio_LoginType" value="Windows" onclick="LoginType();" />