Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.84/43: Рейтинг темы: голосов - 43, средняя оценка - 4.84
DarkSet
1

Вывод информации через скрипт

16.11.2006, 15:54. Показов 8493. Ответов 24
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Возникла у меня тут пара вопросов относительно вывода информации через скрипт.
Первое - я никак не могу понять как обратится к объекту не через ID а через name, как на него ссылаться? Вроде читал читал, то работает, то нет, не понимаю.
Второе - как вывести информацию между определенными тегами? То есть если есть у тега свойство value то все понятно, присваиваем ему значение - видим результат. Но к примеру если у меня есть <div></div> или <textarea></textarea> как мне работать с тем что между ними?
И третье - как сделать вывод через ява скрипт новых строк не убив старые? Когда я использую dicument.write вся страница убивается, в том числе и скрипты, и остается только то что было выведено этими функциями. А если мне надо добавить строки не удалив то что есть?
Вот, заранее спасибо. Не отсылайте к мануалке, я ее прочитал, но не понял
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.11.2006, 15:54
Ответы с готовыми решениями:

Вывод информации из БД через форму
Всем привет. Я новичок в php и прошу у вас помощи. Необходимо сделать следующий скрипт php -&gt;...

Вывод информации из бд через ссылку
Добрый день. Сразу хочу отметить что мой вопрос может показаться лёгким для некоторой части людей....

Вывод информации из БД через форму
Всем привет. Я новичок в php и прошу у вас помощи. Необходимо сделать следующий скрипт php -&gt;...

Вывод информации на TFT через SPI
Всем доброго дня. Помогите с выводом информации на TFT-экран (в моем случае на ILI9341 1,8 дюйма). ...

24
5 / 5 / 5
Регистрация: 24.10.2011
Сообщений: 269
16.11.2006, 20:32 2
Через name в основном обращаются к формам, таблица, фреймам и т.п.
Например:
HTML5
1
2
3
4
5
6
7
8
function A() {
document.name_form.name_input.value="Какой-то текст";
}
 
<form name="name_form">
<input type="text" name="name_input" value="Нажми на кнопку ">
<button onClick="A()" value="Кнопка">
</form>
Вывод текста между тегами:
HTML5
1
2
3
4
5
6
function B() {
id_name.innerHTML="<b>Можно использовать теги</b>";
id_name.innerTEXT="<b>Выводит обычный текст с нулевой реакцией на теги</b>";
}
 
<h1 id="id_name" onClick="B()"> Нажми на этот текст</h1>
Чтоб не убивать строки попробуй использовать document.writeln("Text");
Или используй:
Javascript
1
id_name.innerHTML+="Добавляем в теги строчки";
0
DarkSet
16.11.2006, 20:41 3
Спасибо!
Но с именами я не совсем понял - я не могу обратиться к любому тегу по имени? Если есть тег, к примеру <div id='MyDiv' name='MyDiv2'>
я могу обратиться к нему MyDiv.<метод>, смогу я к нему обратиться через document.MyDiv2.<метод>? Или как?
DarkSet
16.11.2006, 21:07 4
И такой еще вопрос, имена мне не помогли.. Как можно обратиться к группе объектов? Вот у меня есть текст, с некоторыми его частями надо сразу после заргузки страницы выполнить определенное действие, причем заранее количество этих частей незвесно - оно генерится ПХП. В идеале поставить на каждую часть скнипт, но на какое событие? Какой объединяющий тег поддерживает событие onload? <span> - самый лучший, не вносит изменений в отображение, но у него события такого нет... Имена и ИД должны быть уникальными, так что мне приходитя в ПХП генерить джава скрипт который содержит все все айдишники того что мне надо поменять, и меняет. Но это же как то неправильно... Может можно обратиться к группе объектов через класс, или еще как? Или есть событие поддерживаемое всеми тегами которое не надо вызывать а оно само происходит, но не onload?
5 / 5 / 5
Регистрация: 24.10.2011
Сообщений: 269
16.11.2006, 22:59 5
DarkSet
Если честно, то я незнаю, что именно ты хочешь сделать, но я знаю ответы на эти вопросы =)
Все же тебе придёться посмотреть документацию
http://msdn2.microsoft.com/en-us/library/ms536437.aspx http://msdn2.microsoft.com/en-us/library/ms536437.aspx -- <STRONG>getElementById</STRONG>
После сразу же в списке идёт <STRONG>getElementByName</STRONG> и <STRONG>getElementByTagName</STRONG>
они все идут с примерами и если, что-то будет непонятно, то спрашивай =)
0
DarkSet
17.11.2006, 14:10 6
хм, функции интересные, а что значит коллекция елементов? Как мне потом обращаться к каждому отдельно? Я пробую
var i=0;
for (i=0; i<length(document.getElementsByName("touncode")); i++)
{
document.getElementsByName("touncode")[i].innerText=UnCode(document.getElementsByName("touncode")[i].innerText);
}
не работает. Пробовал просто
document.getElementsByName("touncode").innerText=UnCode(document.getElementsByNa me("touncode").innerText);
тоже не работает. Как мне обратиться к каждому из елементов отдельно два раза к одному и тому же?
85 / 61 / 69
Регистрация: 15.03.2007
Сообщений: 6,906
17.11.2006, 17:26 7
Так с коллекциями никто не работает - это очень неэффективно. Всегда сохраняй результат работы document.getElementsByName в переменную и работай с ней:
Код
var codes = document.getElementsByName("touncode");
for (var i=0; i<codes.length; i++)
{
    codes[i] ...
}
Далее. Прежде чем использовать какие-то методы или свойства обращайся к документации. Ссылки есть в http://relib.com/forums/Topic899291-10-1.aspx нашем F.A.Q. по JavaScript.
0
DarkSet
17.11.2006, 18:14 8
var codes=document.getElementsByName("touncode");
for (var i=0; i<codes.length; i++)
{
window.alert("asdf");
codes[i].innerText=UnCode(codes[i].innerText);
}
алерт не показывается, в цикл не входит стало быть. Хотя елементы с таким именем точно есть, я через ИЕ открыл хтмл код и проверил поиском. регистр букв одинаковый - везде нижний. почему такой глюк? поставил алерт на window.alert(codes.length); до цикла - показывает 0.
Функция находится в <head> а елементы в <body>, может из-за этого? Функция просто не видит елементов?
85 / 61 / 69
Регистрация: 15.03.2007
Сообщений: 6,906
17.11.2006, 18:32 9
1. Зачем слеши в строках?
2. У каких тегов ты name поставил?
0
DarkSet
17.11.2006, 18:46 10
Слеши потому что копировал из исходника ПХП
теги - <span> один <p> много
например <p name='touncode'>1082.1083.1072.1076.1073.1080.1097.1077.</p> 0 типисный представитель, сгенерен циклом в ПХП
и <span name='touncode' onclick='this.innerText=UnCode(this.innerText)'>71.108.97.118.97.</span> - при клике успешно перекодируется. Но мне ж надо чтобы при окончании загрузки все это делалось.
вот скрипт на загрузке:
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
window.onload=loaddit;
function loaddit() //сам скрипт
 {
  main2.style.height=main2.offsetHeight-main1.offsetHeight; //установка высоты основной ячейки с содержимым
  //UnCodeAll
  var codes=document.getElementsByName("touncode");
  window.alert(codes.length);
  for (var i=0; i<codes.length; i++)
  {
   window.alert("asdf");
   codes[i].innerText=UnCode(codes[i].innerText);
  }
  var i=10; //начальная левая позиция главного меню
  if (document.getElementById("mmenu_go")!=null)
  {
   mmenu_go.style.left=i; //это пункт меню перейти
   i+=mmenu_go.offsetWidth+2;
  };
  if (document.getElementById("mmenu_see")!=null)
  {
   mmenu_exit.style.left=i; //это пункт меню выйти
   i+=mmenu_see.offsetWidth+2;
  };
 }
85 / 61 / 69
Регистрация: 15.03.2007
Сообщений: 6,906
17.11.2006, 19:03 11
У тегов <p> и <span> нет атрибута name. Vizlim уже сказал тебе, что он применятся для элементов формы и для фреймов.
В твоем случае я бы присвоил <span>-у id и работал с ним через document.getElementById, а для <p> присвоил бы атрибут class="touncode". Затем получал бы все элементы P с помощью document.getElementsByTagName("P") и обрабатывал как нужно все элементы у которых свойство className == "touncode".
0
DarkSet
17.11.2006, 19:19 12
хм, интересная идея, спасибо, как то я сам до такого не додумался )
Не думал что атрибут name есть не у всех тегов. Заменил имя на id - все заработало. http://msdn2.microsoft.com/en-us/library/ms536438.aspx http://msdn2.microsoft.com/en-us/library/ms536438.aspx там не написано что это только для форм, собственно не только для форм оно и работает. Но ищет и по имени и по ид-шникам. Глюк был в том что эти теги не поддерживают имя по человечески. Спасибо
85 / 61 / 69
Регистрация: 15.03.2007
Сообщений: 6,906
17.11.2006, 19:28 13
Учти только что id должен быть уникальным в пределах документа. Это требование рекомендации w3c.
Насчет поддержки атрибутов читай http://www.w3.org/TR/html4/ рекомендацию html 4 или справку по http://msdn2.microsoft.com/en-us/library/ms533054.aspx отдельным тегам в msdn.
0
0 / 0 / 1
Регистрация: 22.11.2006
Сообщений: 5
22.11.2006, 01:48 14
bazile: так с коллекциями тоже никто не работает - всегда сохраняй длину коллекции в переменной ибо это дает преимущество в несколько десятков-сотен и даже тысяч раз в скорости выполнения.
Свойство innerText почти нигде кроме IE не поддерживается - пользуйтесь исключительно innerHTML а если в тэге нет ничего кроме текста - обращайтесь к DOM: допустим текущий элемент - <span> c текстом, тогда для него свойство firstChild как раз и будет предсталять текст(!объект!).
Вообще обращаться к элементам с заданным id напрямую (типа My_div.innerHTML=... для "<div id='My_div'") - не есть хорошо. IE и Опера на это смотрят нормально, FireFox ругается предупрежлением, Netscape вообще ошибку выдает. Для обращения к элементам по id или name лучше завести пару простеньких функций типа
Код
function gel(_id){return window.document.getElementById?window.document.getElementById(_id):null }
Экономия кода налицо. Кстати, информация к размышлению: IE и судя по всему Mozilla помещают в память JavaScript движка все корректные id элементов. Так что если вы пишите document.<и т.д.>, то что такое "document" JavaScript движок узнаёт только пересмотрев все id, и ещё немного порывшись среди свойств объекта window => используюте полную нотацию (window.document.<и т.д.>) везде где это оправденно.
0
85 / 61 / 69
Регистрация: 15.03.2007
Сообщений: 6,906
22.11.2006, 13:48 15
2 ISM
Сохранение кол-ва элементов в коллекции в отдельную переменную ускорит выполнение кода, но не в тысячу раз, это ты загнул.
Выделение document.getElementById() в отдельную функцию может иметь смысл только если скрипт очень большой и в нем много вызовов getElementById. Это может ускорить работу синтактического анализатора кода, но, одновременно, это замедляет выполнение кода. Поэтому эффект от такой оптимизации мне кажется сомнительным.
0
DarkSet
22.11.2006, 15:43 16
А если записать цикл как
for (var i=codes.length-1; i>=0; i--)
{
}

это заменит сохранение длины колекции в отдельную переменную? По идее присваивание выполняется один раз - на первой итерации. Или всетаки это не то и лучше присваивать отдельно перед циклом?
85 / 61 / 69
Регистрация: 15.03.2007
Сообщений: 6,906
22.11.2006, 15:49 17
В такой записи присвоение будет выполнено один раз. Но порядок обхода элементов коллекции изменится на обратный. Если тебя это устраивает, то нет проблем.
0
DarkSet
22.11.2006, 16:27 18
да, порядок тут не важен, ускорение будет? это хорошо.
Еще на счет firstChild, использую:
codes[i].firstChild=UnCode(codes[i].firstChild);
Не работает! Пишет что свойство не поддерживается. Пробовал
codes[i].firstChild.toString=UnCode(codes[i].firstChild.toString);
тоже самое. Если мне возвращается текст в виде объекта так как мне с ним работать?
к тому же немного насторожила в мсдн запись:</P><P class=clsRef>Syntax</P><BLOCKQUOTE><TABLE class=clsStd><TBODY><TR><TH><B>HTML</B></TH><TD>N/A</TD></TR><TR><TH><B>Scripting</B></TH><TD>[ <SPAN class=clsRange>oElement</SPAN><B> =</B> ] <I><SPAN class=moreinfo title="an element from the Applies To list below object</SPAN></I>.<B>firstChild</B></TD></TR></TBODY></TABLE></BLOCKQUOTE><P class=clsRef>Possible Values</P><BLOCKQUOTE><TABLE class=clsStd><TBODY><TR><TD><SPAN class=clsRange>oElement</SPAN></TD><TD>Object that receives the first child object.</TD></TR></TBODY></TABLE>
The property is read-only. The property has no default value.
Если оно только для чтения то как мне поможет? Мне же надо не только читать но и изменять.</P></BLOCKQUOTE>
85 / 61 / 69
Регистрация: 15.03.2007
Сообщений: 6,906
22.11.2006, 16:50 19
firstChild хранит элемент (узел) документа. Напрямую его менять нельзя, поэтому он доступен только для чтения. Это можно сказать "обертка" вокруг настоящего содержимого элемента. Чтобы изменить текст узла попробуй такой код:
codes[i].firstChild.nodeValue = UnCode(codes[i].firstChild.nodeValue);
Для понимания DOM очень полезно иметь под рукой вспомогательные инструменты. В браузере FireFox для этого есть DOM Inspector, а для MSIE панель инструментов под названием http://www.microsoft.com/downloads/details.aspx?FamilyID=e59c3964-672d-4511-bb3e-2d5e1db91038&DisplayLang=en Developer Toolbar.
0
DarkSet
22.11.2006, 17:04 20
Да, так заработало, спасибо.
Тулбар интересный, много возможностей дает. Есть к нему документация на русском? Или русский это для слабохарактерных?
22.11.2006, 17:04
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.11.2006, 17:04
Помогаю со студенческими работами здесь

Вывод информации из БД через сайт в Excel
Есть задача по выводу в Excel информации из БД. Гуглил долго - нашел только вариант с PHPExcel. Но...

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

как реализовать вывод информации из бд через php?
у меня есть база, в которой есть : оценка, дата оценки и фамилия студента. как через php вывести...

Вывод информации о записи в Label через LookupComboBox
Имеется БД access. Как сделать чтобы при выборе записи через LookupComboBox в в Label`ах...

Ввод-вывод информации через UART AVR
Кто как реализует обмен между МК+МК и МК+ПК? Интересует реализация протокола обмена? Может есть...

Вывод времени через скрипт
Доброго времени суток, покажу часть скрипта, которая на машине Windows 7 - отрабатывает не...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru