Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/446.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用(this)关键字的JavaScript_Javascript_Html_Function_Html Table_This - Fatal编程技术网

使用(this)关键字的JavaScript

使用(this)关键字的JavaScript,javascript,html,function,html-table,this,Javascript,Html,Function,Html Table,This,我正在创建一个应用程序,它有多个表,一个有客户及其位置,另一个有客户及其库存项目和项目ID。我在创建一个可用于多个表的函数时遇到了问题,该函数允许用户为一个表创建新行,我有工作代码,但使用该代码,我必须为每个唯一的表复制它 我想要的是使用(这个)以便一个函数可以用于多个表,我尝试过使用(这个),但显然失败了,第一个问题是它无法读取表的属性“length”,但我相信我会遇到更多的问题 任何帮助都将不胜感激 期望的结果:使用(此)在多个表上使用一个函数 函数appendRow(){ var tab

我正在创建一个应用程序,它有多个表,一个有客户及其位置,另一个有客户及其库存项目和项目ID。我在创建一个可用于多个表的函数时遇到了问题,该函数允许用户为一个表创建新行,我有工作代码,但使用该代码,我必须为每个唯一的表复制它

我想要的是使用(这个)以便一个函数可以用于多个表,我尝试过使用(这个),但显然失败了,第一个问题是它无法读取表的属性“length”,但我相信我会遇到更多的问题

任何帮助都将不胜感激

期望的结果:使用(此)在多个表上使用一个函数

函数appendRow(){
var table=document.getElementsByTagName('table');//表引用
长度=这个长度,
row=this.insertRow(this.rows.length),//追加表行
我
//将表格单元格插入新行
对于(i=0;i

添加客户
客户
主要位置
某人
某物

我问你为什么要使用“this”关键字。在按钮中说“这”是毫无意义的,除非你以某种方式告诉它“这”是什么。否则它无法知道“this”实际上是一个名为
custList
的表。不知何故,您需要建立这种连接,我在下面的代码段中选择将表名作为参数传递给js函数

您的代码中也有一个问题,
i
变量没有声明

函数appendRow(id){
var table=document.getElementById(id);//表引用
长度=表格长度,
row=表格.insertRow(表格.rows.length);//追加表格行
var i;
//将表格单元格插入新行
对于(i=0;i

添加客户
客户
主要位置
某人
某物

不要担心
这个问题
,只需定义一个通用函数即可:

function appendRow(id) {
    var custList = document.getElementById(id),
        row = custList.insertRow(custList.rows.length),
        i;
    for (i = 0; i < custList.rows[0].cells.length; i++) {
        createCell(row.insertCell(i), i, 'row');
    }
}
函数appendRow(id){
var custList=document.getElementById(id),
行=custList.insertRow(custList.rows.length),
我
对于(i=0;i
为什么不定义一个通用的
函数appendRow(id){var custList=document.getElementById(id)…}
?在
length=this.length
中,当实际需要
表中的表数时,为什么要使用
this
(即
窗口
)?()旁注:
是一个自动结束标记,因此它应该写为
,而不是
——或者在使用正确的HTML doctype时可以完全省略结束斜杠。如果您真的想将此函数与
this
一起使用,可以开始删除此行
var table=document.getElementsByTagName('table');
这将是无用的。然后你必须在调用之前检索表,并用
call
将它绑定到函数的this,就像这样:
var table1=document.getElementById('custList');appendRow.call(table1);
这很有效!谢谢!我以为你必须使用(这个)为了在多个元素上使用函数。。