【问题标题】:Issue in converting javascript to TypeScript将 javascript 转换为 TypeScript 的问题
【发布时间】:2019-09-17 19:25:18
【问题描述】:

打字稿中的语法问题。我用 javascript 编写代码并尝试将其放入 ts 文件中。进行了一些更改,但仍显示单元格问题。

class X {
  public appendTableColumn() {
    var tbl = <HTMLTableElement>document.getElementById("myTable"); // table reference
    //var colnum= parseInt(tbl.rows[0].cells.length) - 1;
    // i;
    var m = parseInt(tbl.rows[0].cells.length) + 1;
    // open loop for each row and append cell
    for (var i = 0; i < tbl.rows.length; i++) {
      var k = parseInt(i) + 1;

      //createCell(tbl.rows[i].insertCell(tbl.rows[i].cells.length), "R"+ tbl.rows.length +"C"+ k, 'col');
      this.createCell(
        tbl.rows[i].insertCell(tbl.rows[i].cells.length),
        "",
        "col",
      );
      var x = document.getElementById("myTable").rows[i].cells;
      var btnName = "R" + k + "C" + m;
      x[tbl.rows[i].cells.length - 1].id = "td" + btnName;
      x[tbl.rows[i].cells.length - 1].innerHTML =
        '<button class="button" onclick="reply_click(this.id);" id=' +
        btnName +
        ">Manage Items</button>";
      //alert(btnName);
    }
  }
}

【问题讨论】:

  • 你得到的实际错误是什么?
  • 您遇到什么错误?你应该指定它。
  • @JSONDerulo 有关于你所说的资源吗?我认为你错了。
  • @JSONDerulo vars 完全允许在 TS 中使用。
  • createCell 是在哪里实现的?

标签: javascript typescript typescript2.0


【解决方案1】:

document.getElementById 只保证返回HTMLElement,但您隐含地期望它是一个表格,TypeScript 不能保证,因为它不查看您的 HTML 代码(以及其他原因)。

当你有这样的元素类型假设时,你需要做的就是使用类型断言。

var x = (<HTMLTableElement>document.getElementById("myTable")).rows[i].cells;

顺便说一句,您不需要将number 类型的变量传递给parseInt。以下几行:

var m = parseInt(tbl.rows[0].cells.length) + 1;
// ...
var k = parseInt(i) + 1;

应改为:

var m = tbl.rows[0].cells.length + 1;
// ...
var k = i + 1;

【讨论】:

    猜你喜欢
    • 2016-11-18
    • 2023-02-05
    • 1970-01-01
    • 2020-10-06
    • 2021-05-04
    • 2013-04-18
    • 1970-01-01
    • 2021-02-04
    • 2018-05-26
    相关资源
    最近更新 更多