用户使用单选按钮选择是否运行带有错误的警报行代码。想法是用户选择一个无线电元素,运行一个函数(setError())来定位所选的单选按钮,然后将该值传递给另一个函数(runCode()),该函数使用IF语句来决定是否包含错误在警报中。如果用户选择警告并显示错误,则Try Catch代码应捕获错误并在HTML中已经
元素中显示错误。
<form name="Form">
Run Code:
<input type="radio" name="errorRad" onchange="setError()" value="yes">With Error
<input type="radio" name="errorRad" onchange="setError()" value="no">Without Error
</form>
<p id="t">
</p>
脚本:
<script>
function setError() {
var x;
var rad = document.forms["Form"]["errorRad"];
for (i = 0; i < rad.length; i++) {
if (rad[i].checked){
x = rad[i].value;
}
}
runCode(x);
}
function runCode(error) {
if (error == "yes") {
try {
allert(a successful alert box);
} catch(err) {
document.getElementById("t").innerHTML = err.message;
}
}else if (error == "no") {
alert("a successful alert box");
}
}
</script>
有趣的是,在测试之后,通过在代码中放置随机警报框来测试代码在破坏之前到达的位置:代码甚至似乎都没有调用第一个函数(setError)。 onchange事件似乎无法正常工作。也许通过语法错误或替代事件更好。另一个感兴趣的点是调用第二个函数(runCode)。我不太擅长在JavaScript中传递参数(我不太擅长)并且我不确定我的方法是否有效。
答案 0 :(得分:0)
试试这个
var rad = document.forms["Form"]["errorRad"];
for (var i = 0; i < rad.length; i++) {
rad[i].addEventListener('change', onChange);
}
function onChange(event) {
//cast as bool
if (!!event.target.value) {
try {
allert('a successful alert box');
} catch(err) {
document.getElementById("t").innerHTML = err.message;
}
} else {
alert('a successful text box');
}
}
你的代码有一些问题,allert会抛出一个undefined不是函数错误,但是传入a successful alert box
而不是字符串会阻止代码运行
答案 1 :(得分:0)
我稍微更改了您的代码,并使用 allert 删除了您的错误...
alert("a successful alert box");
但其余的都很好。