2015-05-11 2 views
0

У меня есть простая функция javascript, которая будет записывать значение переменной вне функции с помощью document.write и вызвать функцию. Тем не менее, код не работает:Javascript, оператор функции и оператор возврата

var name = 'guru'; 
function type() { 
    document.write = name; 
} 

тогда я попытался возвращение document.write. Однако это также не сработало.

var name = 'guru'; 
function type() { 
    return document.write = name; 
} 
type(); 

В этом коде, я просто возвращает переменную и использовать document.write вне функции. Это работает.

var name = 'guru'; 
function type() { 
    return name; 
} 
document.write = type(); 

Почему это происходит? Может кто-то объяснить это мне?

редактировать

код здесь не работает в поджигатель, потому что поджигатель вне HTML5 документа не признает document.write как функцию, увидеть ошибки в изображении. То есть, если вы запустили firebug и запустить это не сработает, но если он запущен внутри HTML DOM, это ошибка, это ошибка, или так оно и работает.

firebug error

+3

Я думаю, что вам нужно 'document.write (somevariable)' –

+0

Вы намерены * вызов * 'document.write' функция? Потому что ни одна из трех версий, похоже, не делает этого. Вместо этого они переопределяют 'document.write'. – Thilo

+0

как @HoboSapiens указал, что document.write есть функция –

ответ

2

The document.write является функцией. Синтаксис выглядит следующим образом:

document.write(exp1,exp2,exp3,...) 

Параметры не являются обязательными. Несколько аргументов могут быть перечислены, и они будут добавлены к документу, в порядке появления

2

document.write является function, что вам нужно call так:

var myHtml = "<html><head></head><body><div><span>Hello World!</span></div></body></html>"; 

document.write(myHtml); 
3

Вы не должны использовать document.write, но если вы абсолютно необходимо:

var writeSomething = function (message) { 
    document.write(message); 
} 

Если вы пытаетесь отлаживать, я рекомендую использовать console.log. Он поддерживается всеми современными браузерами и гораздо полезнее (он позволяет вам проверять объекты, массивы и т. Д.). Проблема с document.write заключается в том, что он уничтожает текущий документ для записи новой информации (см. Примечание в конце).

Вот пример использования этой функции:

var writeSomething = function (message) { 
 
    document.write(message); 
 
} 
 

 
document.getElementById("myButton").onclick = function() { 
 
    var message = document.getElementById("myMessage").value; 
 
    writeSomething(message); 
 
}
<button id="myButton">click me</button> 
 
<input id="myMessage" placeholder="type message here">

от MDN о том, почему document.write является не-нет:

Примечание: в качестве document.write пишет документ поток, вызывающий document.write на закрытом (загруженном) документе автоматически вызывается document.openwhich will clear the document.

tl; dr? избегайте document.write, как чума.

2

А.

function type() { 
var name = 'guru'; 
document.write (name); 
} 

B.

var name = 'guru'; 
    function type(text) { 
    document.write(text); 

    } 
    type(name); 

Вы должны сделать это как this.Look на него один раз, это поможет вам под стендом.

+1

Вы должны ** не ** возвращать 'document.write (arguments)'; который только когда-либо вернет 'undefined', так как' document.write' является эквивалентом функции 'void'. – royhowie

+0

Ya, это была моя ошибка, я подумал, что теперь я изменил код. Thanx .. – Tanmoy

+0

Установка 'document.write' равная' x', перед возвратом 'x', ничем не отличается. – royhowie

2

По document.write syntax вы должны передать его аргумент, который будет фактическая строка DOM.

Поступая

function type() { 
return name; 
} 
document.write = type(); 

Вы на самом деле вы перезаписать исходный document.write функцию. Итак, теперь, если вы позвоните document.write('foo'), вы получите Uncaught TypeError: document.write is not a function. Правильный способ использования однако document.write может быть:

document.write("<h1>Foo</h1>"); 
Смежные вопросы