JavaScript自触发时的参数传递

触发前台的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  + (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  + (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对象是一个很强大的东西,不妨多考虑一下他。