OI。我生成html和javascript以便在c#webbrowser中使用,我正在通过firefox使用firebug进行调试。
function able(id,ckd) {
if(document.getElementById) {
var el = document.getElementById("answer"+id);
el.disabled = ckd;
el = document.getElementById("comment"+id);
el.disabled = ckd;
}
}
用于反对
<html><head><style type="text/css"></style></head><body><form>
<table>
<tr>
<td><input name="asked" id="asked1" type="checkbox" checked onchange="able('1',!this.checked);" /> Active</td>
<td><textarea name="answer" id="answer1">Some big, fat answer.</textarea></td>
<td><textarea name="comment" id="comment1">Some snarky comment.</textarea></td>
</tr>
<tr>
<td><input name="asked" id="asked2" type="checkbox" onchange="answer2.disabled=!this.checked;comment2.disabled=!this.checked;" /> Active</td>
<td><textarea name="answer" id="answer2" disabled></textarea></td>
<td><textarea name="comment" id="comment2" disabled></textarea></td>
</tr>
</table>
<input name="save" type="button" onclick="window.external.UpdateCandidateQuestions();" value="save" />
<input name="reset" type="reset" value="reset" />
</form></body></html>
真正生成的html很长但形式良好,我在测试时小心避免使用缓存页面。第二种方法(ask2.onchange使用内联javascript)的效果不如第一种方法(ask1.onchange调用头部定义的javascript函数)。 id计数器(即,询问“1”,询问“2”,询问“3”等)并且答案和注释innertext值来自数据库或通过webbrowser输入。有一个一致的失败点,萤火虫穿过它就好像它有效,但它失败了。如果我在完整数据失败点之前和/或之后删除表行,则失败点会移动。一旦失败,页面的其余部分也会失败。
请告知我可能在哪里调试此pima。
答案 0 :(得分:0)
将更改事件与单选按钮一起使用并不是一个好主意。根据W3C HTML 4.01规范,onchange事件:
...当控件丢失时发生 输入焦点及其价值已经存在 自获得关注以来进行了修改 http://www.w3.org/TR/html401/interact/scripts.html#adef-onchange
IE以这种方式为所有表单控件工作 - 您需要修改控件,然后单击其他地方使其失去焦点,以便调度change事件(如果状态更改)。如果点击更改了按钮的状态,其他浏览器将调度更改事件,不需要失去焦点。
使用onclick监听器并根据是否检查控件执行某些操作要好得多。
上述内容可能会或可能不会解决您的问题。据我所知, able()函数没有理由不起作用,只需将onchange
更改为onclick
。