你能告诉我如何用另一个字符替换NaN吗?有些变量分配了一些数值.

为了解决这个问题,我单独创建了一个数组,其中包含已经有一些值的变量.接下来,我开始循环.如果条件返回NaN,则应将其替换为"-".但它不起作用.

var a, b, c, d, x1, x2, x3, x4;
var elem = document.getElementById.bind(document);

function iFunc() {
  a = 1;
  b = 3;
  c = 2;
  d = NaN;

  x1 = elem('a1').innerHTML = a;
  x2 = elem('b1').innerHTML = b;
  x3 = elem('c1').innerHTML = c;
  x4 = elem('d1').innerHTML = d;

  var arrX = [x1, x2, x3, x4];

  for (var x of arrX) {
    if (x !== x) {
      x = "-"; // the character that was supposed to replace NaN
      console.log(x);
    }
  }
}

iFunc();
<table>
  <tr>
    <td><span id="a1"></span></td>
    <td><span id="b1"></span></td>
    <td><span id="c1"></span></td>
    <td><span id="d1"></span></td>
  </tr>
</table>

UPD:带. map ()

var a, b, c, d, x1, x2, x3, x4;
var elem = document.getElementById.bind(document);

function iFunc() {
  a = 1;
  b = 3;
  c = 2;
  d = NaN;

  x1 = elem('a1').innerHTML = a;
  x2 = elem('b1').innerHTML = b;
  x3 = elem('c1').innerHTML = c;
  x4 = elem('d1').innerHTML = d;

  var arrX = [x1, x2, x3, x4].map(n => n != n ? "-" : n);

  console.log(arrX);
}

iFunc();
<table>
  <tr>
    <td><span id="a1"></span></td>
    <td><span id="b1"></span></td>
    <td><span id="c1"></span></td>
    <td><span id="d1"></span></td>
  </tr>
</table>

推荐答案

您正在更改由elem('d1').innerHTML返回的值,这不会影响DOM中的内容.您试图以简化的方式做什么:

var a, b, c, d, x1, x2, x3, x4;
var elem = document.getElementById.bind(document);

function iFunc() {
  a = 1;
  b = 3;
  c = 2;
  d = NaN;

  elem("a1").innerHTML = a!=a ? "-" : a;
  elem("b1").innerHTML = b!=b ? "-" : b;
  elem("c1").innerHTML = c!=c ? "-" : c;
  elem("d1").innerHTML = d!=d ? "-" : d;
}

iFunc();
<table>
  <tr>
    <td><span id="a1"></span></td>
    <td><span id="b1"></span></td>
    <td><span id="c1"></span></td>
    <td><span id="d1"></span></td>
  </tr>
</table>

根据MDN,对于建议使用isNaN的人来说,这并不是所有用例的最佳方式:

或者,在没有Number.isNaN的情况下,表达式(x != x)是测试变量x是否为NaN的更可靠方法,因为结果不受使isNaN不可靠的误报的影响.

Javascript相关问答推荐

如何修复内容安全策略指令脚本-SRC自身错误?

如何在表格上拥有水平滚动条,在正文页面上拥有垂直滚动条,同时还对html表格的标题使用位置粘性?

Klaro与Angular的集成

网页自检测外部元素无法加载

Angular 中的类型错误上不存在获取属性

Chart.js-显示值应该在其中的引用区域

正则表达式,允许我匹配除已定义的子字符串之外的所有内容

使用js构造一个html<;ath&>元素并不能使其正确呈现

NG/Express API路由处理程序停止工作

为什么当我更新数据库时,我的所有组件都重新呈现?

传递方法VS泛型对象VS事件特定对象

使用Document.Evaluate() Select 一个包含撇号的HTML元素

如何使用<;Link>;执行与JS Reaction中的";window.Location=/GameOverDied;";类似的操作?

基于产品ID更新条带产品图像的JavaScript命中错误

在Vercel中部署Next.js项目时获取`ReferenceError:未定义文档`

Next.js无法从外部本地主机获取图像

JAVASCRIPT SWITCH CASE语句:当表达式为';ALL';

每隔一行文本段落进行镜像(Boustrophedon)

如何在函数组件中保留对计时器的引用

如何在底部重叠多个div?