| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > JavaScript: Общие вопросы > Вопрос по объектам |
| Автор: chdan 13.8.2006, 15:39 | ||||
| Не обессудьте конечно, с javascript сталкиваюсь изредка. Есть форма на html. Хочу по нажатию на кнопку спрятать текст в одной из форм. Я думал, это можно сделать, если я напишу так:
и уже в функции, вызываемой по событию OnClick:
Короче, косяк тут явно принципиальный. Посоветуйте, как можно сделать то что я хочу. |
| Автор: Gaioz 13.8.2006, 15:47 | ||
| Много способов. Вот один из них:
Добавлено @ 15:48 И не забывай про кавычки в инициализации объекта (id именуется в кавычках) |
| Автор: chdan 13.8.2006, 15:53 |
| Класс! Спасибо! А может порекомендуете литературу еще, где можно посмотреть свойства типа innerText |
| Автор: Gaioz 13.8.2006, 15:59 | ||
Можно в принципе в интернете поискать, там точно этого добра навалом, а можно и книгу приобрести, вот только что посоветовать не знаю, сам особо не вникал в JS |
| Автор: vasac 13.8.2006, 18:34 | ||
| Так же могу добавить, что innerText поддерживается только IE. В данном случае все тоже самое можно сделать просто заменив innerText на innerHTML, который поддерживается гораздо шире, хотя тоже не соответствует стандартам. Запись же текста в элемент с затиранием предыдущего текста, в соответствии со стандартами делается несколько сложнее:
|
| Автор: Sardar 14.8.2006, 01:57 |
В топе "Хорошая (online/offline) документация" лежат не плохие мануалы. Советую http://wdh.suncloud.ru |
| Автор: Gaioz 14.8.2006, 09:44 | ||
| vasac, можешь обеснить что есть el? У меня выходит только так?
|
| Автор: vasac 14.8.2006, 10:38 | ||||
el есть elемент. Просто любой html(dom)-элемент (полученный, например, через getElementById) в который записывается текст.
Этим ты проверяешь есть ли у элемента (с id равным значению переменной el) хотя бы один потомок. Если нужно проверить есть ли элемент с заданным id:
|
| Автор: Gaioz 14.8.2006, 10:51 | ||||||
Чесно говоря не совсем понятно. Можешь переделать этот пример.
Лично я почему то задумываюсь о нулях и еденицах |
| Автор: Gaioz 14.8.2006, 12:09 | ||
Блин забыл вставить..... Ну все равно, так не пашет |
| Автор: vasac 14.8.2006, 13:59 | ||||
Аттрибут абзаца:
дальше сам... |
| Автор: chdan 21.8.2006, 11:08 | ||
| По вопросу "Как удалять/создавать объекты на экране ". Если у меня
Я могу спрятать текст используя document.getElementById("Text1").innerText=""; Однако возникает другая ситуация, когда надо удалить объект. Например тег <input type="text" id=Form1>. Я вижу два выхода, оба гемморойные. Не судите строго, ибо на JS я пишу редко. 1) Забить теги в условие функции и выводить по событию тот набор, который сейчас актуален 2) Не писать теги, а создавать все через объекты Уверен, что "удалить тег" можно. Намекните как? |
| Автор: vasac 21.8.2006, 11:41 | ||
| chdan, повторяю, если ты даже делаешь так, то используй innerHTML в данном случае результат будет абсолютно тем же, но innerText работает только в IE и неизвестно долго ли проработает еще. Удалить тэг (не тэг все-таки, а элемент) можно из родительского объекта.
|
| Автор: chdan 21.8.2006, 11:52 |
| Спасибо |
| Автор: Avb 21.8.2006, 12:06 | ||
| "Удалить" объект можно просто спрятав: el.style.display = "none"; Затем при необходимости его можно снова отобразить: el.style.display = ""; Чтобы изменить текст необязательно удалять и добавлять потомков. Для этого можно изменить свойство nodeValue соответствующей ноды. Для:
document.getElementById( "Text1" ).firstChild.nodeValue = "Новый текст"; |
| Автор: vasac 21.8.2006, 12:32 | ||
Если уверен, что внутри элемента есть текст и только он и ничего больше, то да, так проще. |
| Автор: Avb 21.8.2006, 12:39 |
Необязательно. Нужно быть уверенным, что текст есть, потому что в противном случае не будет потомка и невозможно изменить его значение. Тогда нужно добавлять текстовую ноду. А если кроме текста есть еще другие дети, то достаточно знать какой по счету является наша текстовая нода: document.getElementById( "Text1" ).childNodes[i].nodeValue = "Новый текст"; |
| Автор: chdan 23.8.2006, 14:35 |
| Avb, спасибо |