getElementById onchange results in对象不是函数
getElementById onchange results in object is not a function
当input_1文本框的值更改时,我正在尝试触发一个函数。
即getElementById('put_1')。onchange导致对象不是函数。
HTML
<form method="GET" id="game_form"></form>
<table border="1" style="background-color:#FFFFCC;border-collapse:collapse;border:1px solid #FFCC00;color:#000000;width:100" cellpadding="3" cellspacing="3">
<tr>
<td id="cell_1"><input type="text" id="input_1" form="game_form" value="x"></td>
<td id="cell_2"><input type="text" id="input_2" form="game_form"></td>
<td id="cell_3"><input type="text" id="input_3" form="game_form"></td>
</tr>
<tr>
<td id="cell_4"><input type="text" id="input_4" form="game_form"></td>
<td id="cell_5"><input type="text" id="input_5" form="game_form"></td>
<td id="cell_6"><input type="text" id="input_6" form="game_form"></td>
</tr>
<tr>
<td id="cell_7"><input type="text" id="input_7" form="game_form"></td>
<td id="cell_8"><input type="text" id="input_8" form="game_form"></td>
<td id="cell_9"><input type="text" id="input_9" form="game_form"></td>
</tr>
</table>
Javascript
$(window).load(
function checkInput() {
// alert("I am an alert box!1");
var cell = document.getElementById('input_1');
alert(cell.value);
**document.getElementById('input_1').onchange**(
doSomething()
);
}
);
function doSomething(){
alert("I am an alert box!2");
}
您使用了错误的语法。您想要addEventListener
var el = document.getElementById("input_1");
el.addEventListener("change", doSomething, false);
或者使用jQuery:
var $el = $('#input_1');
$el.on('change', doSomething);
问题是.onchange
是属性,而不是函数。
顺便说一句,你可以使用jQuery.on()来实现这一点:
$('#input_1').on("change", function()
{
doSomething();
});
或者.on("change", ...
:的.change()快捷方式
$('#input_1').change(function()
{
doSomething();
});
如果你想使用onclick
而不是.change()
和.addEventListener()
,你可以这样使用:
document.getElementById('input_1').onchange = doSomething;
Fiddle。
document.getElementById('input_1').onchange = function(){
//Do what you want
}
您需要使用jQuery选择器来绑定onchange,或者使用javascript事件绑定方法来实现这一点。
这就是$('#input_1').change(function() { });
或
var myEl = document.getElementById('input_1');
myEl.addEventListener('change', function() {
// do something
}, false);
尝试:
$('#input_1').change(function(){
alert('changed');
});
这会奏效的!
由于问题用jquery标记,您可以使用以下
$(document).ready(function(){ // when all DOM is loaded
$('#input_1').on('change',function(){ // # is id based selector
// you event handler logic
});
});
希望它能帮助。。。
试试这个。。。
$(document).ready(function(){ // When DOM is ready...
$('input').on('change',function(){ // Every Input field would get into this Event... to change only for id=input_1 -> '#input_1'
//Alternative to 'change' would be 'keyup', because change is only called when the input field losts his focus...
alert(this.id);
switch(this.id)
{
case 'input_1': alert('input 1!');
break;
case 'input_2': alert('input 2!');
break;
//....
}
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table border="1" style="background-color:#FFFFCC;border-collapse:collapse;border:1px solid #FFCC00;color:#000000;width:100" cellpadding="3" cellspacing="3">
<tr>
<td id="cell_1"><input type="text" id="input_1" form="game_form" value="x"></td>
<td id="cell_2"><input type="text" id="input_2" form="game_form"></td>
<td id="cell_3"><input type="text" id="input_3" form="game_form"></td>
</tr>
<tr>
<td id="cell_4"><input type="text" id="input_4" form="game_form"></td>
<td id="cell_5"><input type="text" id="input_5" form="game_form"></td>
<td id="cell_6"><input type="text" id="input_6" form="game_form"></td>
</tr>
<tr>
<td id="cell_7"><input type="text" id="input_7" form="game_form"></td>
<td id="cell_8"><input type="text" id="input_8" form="game_form"></td>
<td id="cell_9"><input type="text" id="input_9" form="game_form"></td>
</tr>
</table>
问候
相关文章:
- 在javascript中调用函数/对象引用时,可容纳任何数据类型
- 访问函数对象的上下文属性|如何
- 为什么可以'我们在函数体中为函数对象添加属性,就像在javascript中为对象文字添加属性一样
- 如何将函数对象从javascript传递到Polymer元素
- 为什么函数对象的实例没有继承函数原型属性
- 为什么我会从 JavaScript 函数返回一个命名函数(对象)
- 为什么实例构造函数指向最上面的函数构造函数对象
- 使用object.freeze()扩展函数对象-can't添加字段
- 为什么'这'与函数对象一起使用时会有不同的处理方式
- setTimeout()/setInterval()赢得't执行**我正在传递函数对象,而不是执行函数
- 为什么茉莉花间谍不't通过引用解析函数对象
- 在 mongo map 中调用外部 javascript 函数(对象)或减少上下文的可能方法
- 在 JavaScript 中为函数对象添加别名
- 在 Express JS 中从路由调用函数对象
- 函数对象的名称属性是什么
- 构造函数对象
- 节点.js - 从另一个函数/对象发出事件
- 声明函数是否会创建具有函数名称和分配给它的函数对象的变量
- 函数对象__proto__和原型属性
- 类仿真 - 模块模式与函数对象