Javascript I';m使用“";这";关键字和;调用;方法

Javascript I';m使用“";这";关键字和;调用;方法,javascript,this,Javascript,This,我试图做的是将一个确定的元素传递给函数,我试图用“this”关键字表示该元素。问题是它必须跨越两个函数,我不知道错误在哪里。一切都从第三个函数开始,然后调用第二个函数传递document.body作为函数的“this”。然后,第二个函数使用“call”方法将“this”传递给第一个函数 函数创建标签(标签,内部){ 元素=document.createElement(标记); 如果(内部){ element.innerHTML=内部; } 这个.appendChild(元素); 返回元素; }

我试图做的是将一个确定的元素传递给函数,我试图用“this”关键字表示该元素。问题是它必须跨越两个函数,我不知道错误在哪里。一切都从第三个函数开始,然后调用第二个函数传递document.body作为函数的“this”。然后,第二个函数使用“call”方法将“this”传递给第一个函数

函数创建标签(标签,内部){
元素=document.createElement(标记);
如果(内部){
element.innerHTML=内部;
}
这个.appendChild(元素);
返回元素;
}
函数创建输入(标签值){
输入=创建标签调用(这是“输入”);
label=create_tag.call(这是“label”,label_值);
input.setAttribute(“id”、“pers_u”+标签值);
返回输入;
}
函数crea_personaggio(){
输入值=[“姓名”、“姓氏”、“昵称”、“年龄”];
对于(i=0;i
.call()
要求作为第一个参数传入一个对象,而您传入的是一个字符串,这在这里肯定不适用(但在技术上是可行的)

去买吧

create_input.call(document.body, input_values[i]);
除此之外,您还需要为任何变量声明添加
var
关键字,这些变量声明最终将成为一个全局变量块(这可能不是问题,但它会带来非常坏的后果)。

.call()
需要将一个对象作为第一个参数传入,您正在传递一个字符串,而这个字符串在这里肯定不适合您(尽管从技术上讲它是可行的)

去买吧

create_input.call(document.body, input_values[i]);

除此之外,您还为任何变量声明添加了
var
关键字,这些变量声明最终将成为一大块全局变量(这可能不是一个问题,但这是一个非常糟糕的因果报应)。

您忽略了使用
var
声明局部变量(这意味着所有变量都是全局变量)。到底什么不起作用?是否有错误消息?为什么不将元素作为参数传入?您忽略了使用
var
(这意味着所有变量都是全局变量)声明局部变量。到底什么不起作用?是否有错误消息?为什么不将元素作为参数传入?+1尽管传入字符串是有效的(在调用中,
this
将是表示该字符串的
string
对象,原语将被提升)。这不是他想要的@克劳德:是的,这正是我想表达的。从技术上讲,它是有效的。+1尽管传入字符串是有效的(在调用中,
this
将是一个表示该字符串的
string
对象,但原语会被提升)。这不是他想要的@克劳德:是的,这正是我想表达的。从技术上讲,这是可行的。