触发前台的Html按钮,调用客户端事件时,如何点击该按钮而去动态的改变该按钮的一些属性,刚开始的时候我是把该按钮的的id手动写进去,后来发现这个方法很有缺陷,一旦你的前台的按钮都是动态生成的话,这样的操作将会对你的代码很麻烦。后来我停下来仔细想了想,难道所有的都要这样写吗,难道没有其它的方法吗?有时候我发觉自己把一个问题搞得特别复杂的时候,我就会停下来思考一会,是不是自己的方向错了,有没有其他更好的解决方案。后来我翻阅了一些资料,查阅了一些工具书,才发现自己的做法真的很愚蠢,这所有的一切仅仅就一个“this”参数就可以搞定了,也就是说“this”对象代表的就是该按钮对象本身,自然你调用的改变的属性的函数所改变的就是该按钮的属性了。
例如下面的代码:
var num = document.getElementById('LabelTotalNum').innerText; var tr = ""; var _str = ""; tr += '<table cellpadding="2px" cellspacing="2px">'; for (var i = 0; i < num / 6; i++) { tr += '<tr>'; for (var j = 1; j <= 6; j++) { _str = "Judge" + (i * 6 + j); var aa = ans.indexOf(_str); if (ans.indexOf(_str) >= 0) tr += '<td class="td"><input id="Judge' + (i * 6 + j) + '" name="clickname" style = "background-color: #ff0000;" type="submit" ' + ' value="' + (i * 6 + j) + '" class="weida" title="Judge" onclick="SaveAndThen(this);return false;" /></td>'; else tr += '<td class="td"><input id="Judge' + (i * 6 + j) + '" name="clickname" type="submit" ' + ' value="' + (i * 6 + j) + '" title="Judge" class="weida" onclick="SaveAndThen(this);return false;" /></td>'; } tr += '</tr>'; } tr += '</table>'; document.getElementById('DivProblem').insertAdjacentHTML("beforeEnd", tr);
在这段代码中,我的按钮的都是动态生成的,那么以前要是每次生成的时候把他的id一起写到调用函数中去,特别的麻烦,现在onclick=“SaveAndThen(this)”中只需要传递参数this即可,所以这样问题就变得很简单了。所以在以后的编码中大家可以留心一下,this对象是一个很强大的东西,不妨多考虑一下他。