Модераторы: Sardar, Aliance

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вопрос по объектам, Как удалять/создавать объекты на экране 
:(
    Опции темы
chdan
  Дата 13.8.2006, 15:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 13.8.2006

Репутация: нет
Всего: нет



Не обессудьте конечно, с javascript сталкиваюсь изредка.

Есть форма на html. Хочу по нажатию на кнопку спрятать текст в одной из форм.

Я думал, это можно сделать, если я напишу так:

Код

<p id=Text1>Какой-то текст, который я хочу по событию спрятать</p>


и уже в функции, вызываемой по событию OnClick:
Код

var Text = document.getElementById(Text1);
Text = 'Изменен';



Короче, косяк тут явно принципиальный. Посоветуйте, как можно сделать то что я хочу.

PM MAIL   Вверх
Gaioz
Дата 13.8.2006, 15:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 36
Регистрация: 15.7.2006

Репутация: нет
Всего: нет



Много способов.
Вот один из них:
Код

<html>
 <head>
  <script type="text/javascript">
   <!--
  function text(){
document.getElementById("Text1").innerText="Новый текст";
}
 
  //--> 
</script>
</head>
<body>
 <p id="Text1" onMouseOver="text()">Какой-то текст, который я хочу по событию спрятать</p>
</body>
</html>


Добавлено @ 15:48 
И не забывай про кавычки в инициализации объекта (id именуется в кавычках)
PM MAIL   Вверх
chdan
Дата 13.8.2006, 15:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 13.8.2006

Репутация: нет
Всего: нет



Класс! Спасибо! А может порекомендуете литературу еще, где можно посмотреть свойства типа innerText smile 
PM MAIL   Вверх
Gaioz
Дата 13.8.2006, 15:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 36
Регистрация: 15.7.2006

Репутация: нет
Всего: нет



Цитата

Класс! Спасибо! А может порекомендуете литературу еще, где можно посмотреть свойства типа innerText   

Можно в принципе в интернете поискать, там точно этого добра навалом, а можно и книгу приобрести, вот только что посоветовать не знаю,  сам особо не вникал в JS smile Могу сказать лиш что innerText это что то типа  ссылки на текст между тегов, т.е. в принципе можно изменять текст между любыми тегами.
PM MAIL   Вверх
vasac
Дата 13.8.2006, 18:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1060
Регистрация: 4.5.2006

Репутация: 13
Всего: 36



Так же могу добавить, что innerText поддерживается только IE. В данном случае все тоже самое можно сделать просто заменив innerText на innerHTML, который поддерживается гораздо шире, хотя тоже не соответствует стандартам.

Запись же текста в элемент с затиранием предыдущего текста, в соответствии со стандартами делается несколько сложнее:
Код

while ( el.firstChild ) el.removeChild( el.firstChild );
el.appendChild( document.createTextNode( "Текст" ) );

PM WWW   Вверх
Sardar
Дата 14.8.2006, 01:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



Цитата(chdan @  13.8.2006,  14:53 Найти цитируемый пост)
А может порекомендуете литературу еще,

В топе "Хорошая (online/offline) документация" лежат не плохие мануалы. Советую http://wdh.suncloud.ru


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Gaioz
Дата 14.8.2006, 09:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 36
Регистрация: 15.7.2006

Репутация: нет
Всего: нет



vasac, можешь обеснить что есть el?
У меня выходит только так?
  
Код

function text(el) {
  if(document.getElementById(el).firstChild) 
alert("Есть объект");  
 }

PM MAIL   Вверх
vasac
Дата 14.8.2006, 10:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1060
Регистрация: 4.5.2006

Репутация: 13
Всего: 36



el есть elемент. Просто любой html(dom)-элемент (полученный, например, через getElementById) в который записывается текст.

Код

if(document.getElementById(el).firstChild)

Этим ты проверяешь есть ли у элемента (с id равным значению переменной el) хотя бы один потомок.

Если нужно проверить есть ли элемент с заданным id:
Код

if(document.getElementById(id)) {...

PM WWW   Вверх
Gaioz
Дата 14.8.2006, 10:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 36
Регистрация: 15.7.2006

Репутация: нет
Всего: нет



Цитата

el есть elемент. Просто любой html(dom)-элемент (полученный, например, через getElementById) в который записывается текст.

Чесно говоря не совсем понятно. Можешь переделать этот пример. 
Код

<html>
 <head>
  <script type="text/javascript">
   <!--
 function text(){
  while ( el.firstChild ) el.removeChild( el.firstChild );
el.appendChild( document.createTextNode( "Текст" ) );
   }

 //--> 
</script>
</head>
<body>
 <p id="Text1" onMouseOver="text(this.id)">Какой-то текст, который я хочу по событию спрятать</p>
</body>
</html>

 

Цитата

Этим ты проверяешь есть ли у элемента (с id равным значению переменной el) хотя бы один потомок.

Лично я почему то задумываюсь о нулях и еденицах  smile  видимо от C++ привычка smile 


PM MAIL   Вверх
Sardar
Дата 14.8.2006, 11:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



Цитата(Gaioz @  14.8.2006,  09:51 Найти цитируемый пост)
Лично я почему то задумываюсь о нулях и еденицах  smile  видимо от C++ привычка smile

Ну если это так, то почему функция text без аргументов? Откуда должно браться el? Замени text() на text(el), а в onmouseover замени text(this.id), на text(this).


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Gaioz
Дата 14.8.2006, 12:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 36
Регистрация: 15.7.2006

Репутация: нет
Всего: нет



Цитата

Ну если это так, то почему функция text без аргументов?

Блин забыл вставить.....
Ну все равно, так не пашет smile 
PM MAIL   Вверх
vasac
Дата 14.8.2006, 13:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1060
Регистрация: 4.5.2006

Репутация: 13
Всего: 36



Код

/* Функция вставки текста в DOM-элемент 
 @param object — элемент, куда вставляем.
 @param string — вставляемый текст
*/
function setText( el, text ) {
  while ( el.firstChild ) el.removeChild( el.firstChild ); // Очистить элемент.
  el.appendChild( document.createTextNode( text ) );
  return el;
} // setText().


Аттрибут абзаца:
Код

onMouseOver="setText( this, &quot;Нужный текст&quot; )"


дальше сам...
PM WWW   Вверх
chdan
Дата 21.8.2006, 11:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 13.8.2006

Репутация: нет
Всего: нет



По вопросу "Как удалять/создавать объекты на экране ".

Если у меня 
Код

<p id=Text1>Какой-то текст, который я хочу по событию спрятать</p>

Я могу спрятать текст используя document.getElementById("Text1").innerText="";

Однако возникает другая ситуация, когда надо удалить объект.

Например тег <input type="text" id=Form1>. 

Я вижу два выхода, оба гемморойные. Не судите строго, ибо на JS я пишу редко.

1) Забить теги в условие функции и выводить по событию тот набор, который сейчас актуален

2) Не писать теги, а создавать все через объекты

Уверен, что "удалить тег" можно. Намекните как? smile
PM MAIL   Вверх
vasac
Дата 21.8.2006, 11:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1060
Регистрация: 4.5.2006

Репутация: 13
Всего: 36



chdan, повторяю, если ты даже делаешь так, то используй innerHTML в данном случае результат будет абсолютно тем же, но innerText работает только в IE и неизвестно долго ли проработает еще.

Удалить тэг (не тэг все-таки, а элемент) можно из родительского объекта.

Код

var el = document.getElementById( "Form1" ); // Получили элемент.
var par = el.parentNode; // Получили его предка.
par.removeChild( el ); // Удалили элемент из списка потомков родительского объекта.

PM WWW   Вверх
chdan
Дата 21.8.2006, 11:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 13.8.2006

Репутация: нет
Всего: нет



Спасибо smile , про innerHTML тоже понял.
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1211 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.