【问题标题】:javascript multiple try catchjavascript 多次尝试捕获
【发布时间】:2016-10-10 03:15:01
【问题描述】:

我读了这篇文章Multiple try-catch or one?,想知道是否有更好的方法?有没有办法忽略不好的代码行?我的问题是我需要从可能存在或不存在的对象中加载多个变量。 谢谢大家

 toparcv = document.getElementsByName("attribute[425]")[0].value;
  toparcv = document.getElementsByName("attribute[423]")[0].value;
  toparcv = document.getElementsByName("attribute[424]")[0].value;
  toparcv = document.getElementsByName("attribute[426]")[0].value;
  toparcv = document.getElementsByName("attribute[434]")[0].value;
  bottomarcv = document.getElementsByName("attribute[271]")[0].value;
  bottomarcv = document.getElementsByName("attribute[265]")[0].value;
  bottomarcv = document.getElementsByName("attribute[268]")[0].value;
  bottomarcv = document.getElementsByName("attribute[369]")[0].value;
  bottomarcv = document.getElementsByName("attribute[433]")[0].value;
console.log(toparcv);
console.log(bottomarcv);

我试图从一个网站中读取一个文本框,该网站通过添加 433 或 268 从大约 10 个不同的名称中随机生成名称。

【问题讨论】:

  • 听起来您应该使用if 语句来检查对象是否存在。
  • try/catch放在抛出异常的代码周围,而不是整个块。
  • 也许您应该使用循环或函数,这样您就不需要为每个变量重复代码。
  • if 语句应该是 15 if else's 还是我疯了?
  • @zackmcdonald - 你能提供一些代码来准确显示你正在尝试做什么,或者一个例子吗?似乎您遇到了一个很容易解决的问题,但您只是在使用 try...catch 的东西走错了路……

标签: javascript try-catch


【解决方案1】:

您可以像这样覆盖所有bottommarcv 分配:

[271, 265, 268, 369, 433].forEach(function(num) {
    var list = document.getElementsByName("attribute[" + num + "]");
    if (list && list.length) {
        bottomarcv = list[0].value;
    }
});

此代码通过在引用变量的属性之前检查变量的完整性来预先避免异常,并且因为它使用循环来检查每个元素,所以它只能对所有值使用一个 if 语句。

将它们全部分配给同一个变量有点奇怪。您真的只希望在此处使用最后一个有值的吗?

【讨论】:

  • @zackmcdonald - 您必须准确地向我们展示您正在使用的代码,因为我认为我的答案中的代码不会产生该错误。如果listundefined,那么代码根本不会评估list.length。请检查以确保您的代码与我显示的相同。
  • @zackmcdonald - 在您更正代码后,这对您有用吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-09-12
  • 1970-01-01
  • 2013-07-12
  • 2013-08-26
  • 1970-01-01
  • 1970-01-01
  • 2014-06-09
相关资源
最近更新 更多