2012-06-13 3 views
2

У меня есть переменная, когда я пишу ее значение, используя document.write(). Я не получаю истинное значение. См this-Переменная не содержит истинного значения. Как. Зачем?

<div onclick="a=this;document.write(a)">this is div</div> 

С этого нажав DIV я получаю эту [object HTMLDivElement]. Но это не истинное значение см. Так:

<button onclick="[object HTMLDivElement].style.visibility='hidden'">click me</button> 

, когда я использовал этот код. Я ожидал, что он скроет все элементы div. Но у меня этого не было. Зачем?

Примечание: -

я не хочу, лучший способ сделать это, я хочу знать, проблема в моем коде.

+0

Вы просто пытаетесь скрыть этот DIV? – Joe

+0

Этот код очень не прав. – SLaks

+0

Я знаю, что это неправильно, но я спрашиваю, что не так? – Ash

ответ

4

Передача объекта в document.write приведет к преобразованию объекта в строку, позвонив по телефону .toString().

При вызове элемента DOM <div>toString() возвращает "[object HTMLDivElement]".

Это просто строковое представление объекта; в принципе невозможно получить исходный объект из этой строки.

0

это потому, что this является [object HTMLDivElement] не логическое значение в первом примере ....

<button onclick="this.hidden=true;">click me</button> 

будет работать

+0

Я использую hidden = true, потому что, честно говоря, я не хотел писать остальное. имейте в виду, что это просто отображение не-специфичности для отображения: none; – rlemon

+0

Я не хочу спрятать кнопку – Ash

0

document.write требует, чтобы отправить его сырым HTML (строка, в основном), но вы ошибочно пытаетесь отправить его вместо объекта «div».

Я не проверял, но я предполагаю, что он должен работать

<div onclick="a=this.innerHTML;document.write(a)">this is div</div> 

или более семантически правильно:

<div onclick="a=this;document.write(a.innerHTML)">this is div</div> 

Другими словами, получить исходный HTML вашего «сНу» объекта (используя его свойство innerHTML), а не сам обработанный объект «div», и отправьте его.

Смежные вопросы