如何让这个简单的 Try/Catch 测试起作用?

How do I get this simple Try/Catch test to work?

用户使用单选按钮选择是否运行 警告代码行有错误。这个想法是用户选择一个单选元素,一个函数(setError())是 运行 定位所选单选按钮,然后将值传递给另一个使用 IF 的函数(运行Code())语句来决定是否在警报中包含错误。如果用户选择发出错误警报,则 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 事件似乎无法正常工作。也许语法错误或替代事件更好。另一个有趣的地方是第二个函数的调用(运行代码)。我不太擅长在 JavaScript 中传递参数(说实话我不太擅长)而且我不确定我的方法是否有效。

JS Fiddle: http://jsfiddle.net/rwowf5j8/22/

试试这个

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');   
    }
}

您的代码存在一些问题,警报会抛出一个 undefined is not a function 错误,但传入 a successful alert box not as a string 会停止来自 运行[=13 的代码=]

fiddle - http://jsfiddle.net/rwowf5j8/24/

我稍微更改了您的代码,并使用 allert...

删除了您的错误
alert("a successful alert box");

http://jsfiddle.net/f3b5kxx3/

不过其他都还不错