如何使用函数参数调用对象方法?

时间:2016-02-03 18:42:48

标签: javascript html

所以我之前问过similar question ...我想知道如何在document .element .style .property =值。解决方案很简单,而且几乎有意义 - 但显然我并不完全理解它,或者我知道为 .element 尝试相同的解决方案并不起作用。

这是我的代码:

function appendElement(handle){

 element=document[handle]('div');
 document.body.appendChild(element);
}

这样我可以选择创建一个新元素,或者根据id或类或索引外观或其他方式移动现有元素。当然,即使不知道正确的方法,我上面的代码对我来说也是错的,但如果没有一些帮助,它是我能做的最好的。

编辑:测试用例



/* The core instructions */
element=document.createElement('div');
document.body.appendChild(element);


/* the choosy version */
function appendElement(handle){
element=document[handle]('div');
document.body.appendChild(element);
}
appendElement(createElement);
element.innerHTML="third text";


/* SHOULD move the 'text' div under the 'third text' div*/
appendElement(getElementById('first'));

<div id="first">text</div>
<div>second text</div>
&#13;
&#13;
&#13;

2 个答案:

答案 0 :(得分:-1)

修改

在这一行appendElement(getElementById('first'));中你没有传递一个函数,你传递调用undefined的结果与param 'first',因为它找不到函数在那个上下文或一个名为getElementById的全局函数中(所以它将是undefined),此外你正试图执行undefined传递一个字符串......这会引发一个错误,并且在函数存在的情况下(即你传递document.getElementById('first')),那么你将传递执行该函数的返回值而不是函数。

如果你想传递一个函数你应该传递一个函数,那就是appendElement(document.getElementById),而不用参数调用它,但我认为你需要传递一个选择器到那个功能来完成你想要做的事情。所以 代码将是这样的:

function appendElement(handle, selector){
  element=handle.call(document, selector);
  document.body.appendChild(element);
}

appendElement(document.getElementById, 'first');
<div id="first">text</div>
<div>second text</div>

调用允许您将函数作为方法执行,并指定哪个对象将成为该调用的接收者。 Here is more info

答案 1 :(得分:-3)

我不明白你的需要。

但是,如果handle等于“createElement”(属性为document),则代码将会运行。