this
ссылается на родителя функции, но его родитель на самом деле является объектом window
, а не объектом document
или document.body
.this
на самом деле относится к тому контексту, из которого вызывается функция, и, по моему мнению, вам следует избегать ее использования для вызова методов только по этой причине, потому что может быть трудно понять, на что действительно ссылается this
.Например, если вы вызываете функцию, используя this
из другой функции, она будет ссылаться на контекст внутри этой функции.
Этот пример может помочь показать, что происходит:
var hello = function() {
alert( this.message );
}
window.message = "hello!";
hello()
Вы можете document.body
прямо в коде, как вы предлагали ранее, или вы можете передать другой параметр, который сообщает функции, куда добавить созданный тег:
function create_tag(inner, elementToAddTag){
a=document.createElement("a");
a.innerHTML=inner;
elementToAddTagTo.appendChild(a);
}