Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   как записать id всех элементов в массив? (https://javascript.ru/forum/misc/7420-kak-zapisat-id-vsekh-ehlementov-v-massiv.html)

SunYang 31.01.2010 16:46

как записать id всех элементов в массив?
 
как записать id всех элементов в массив?

micscr 31.01.2010 16:58

var arr = [];
var list = document.getElementsByTagName('*');
for (var i=0; i<list.length; i++)
{
    if (list[i].id) arr.push(list[i].id);
}

SunYang 03.02.2010 19:21

Вот это говорит undefined:
function go1() {
var arr = [] // массив значений id
var list = document.getElementsByTagName('*');
for(i=0; i<list.length; i++) {
if(list[i].id) arr.push(list[i].id);
}
document.write(arr[i])
}
</script>


<input type="button" value="Save" onclick="go1()">

<table width="600" border="1" cellspacing="0" cellpadding="0">
<tr>
<td align="center" id="a3">Data1</td>
<td align="center" id="b3">Data2</td>
<td align="center" id="c3">Data3</td>
</tr>
</table>

PeaceCoder 03.02.2010 19:26

Цитата:

Сообщение от SunYang
document.write(arr[i])

alert(arr);

SunYang 03.02.2010 19:47

Функция записывает в значения id элементов, у которых нет id в значении null. Почему вот с этим условием if(list[i].id) она не пропускает запись в массив элементов без айдишников?

SunYang 03.02.2010 20:03

Вот это вот выводит 9 раз undefined прежде чем начать выводить a3, b3, c3. Выходт в массив arr[] всё записывается?
<script>
function go1() {
var arr = [] // массив значений id
var list = document.getElementsByTagName('*');
for(i=0; i<list.length; i++) {
if(list[i].id) arr[i] =list[i].id;
alert(arr[i])
}

}
</script>


<input type="button" value="Alert" onclick="go1()">

<table width="600" border="1" cellspacing="0" cellpadding="0">
<tr>
<td align="center" id="a3">Data1</td>
<td align="center" id="b3">Data2</td>
<td align="center" id="c3">Data3</td>
</tr>
</table>

PeaceCoder 03.02.2010 20:15

Цитата:

Сообщение от SunYang
if(list[i].id) arr[i] =list[i].id;

if(list[i].id) arr.push(list[i].id);

JsLoveR 03.02.2010 20:36

ааа, меня опередил PeaceCoder:cray:

SunYang 03.02.2010 21:47

Все равно не работает. Теперь всю дорогу выдает только undefined. Не пойму че за нна( Все ж нормально должно быть

SunYang 03.02.2010 21:51

вот так посмотрел:
<script>
function go1() {
var arr = [] // массив значений id
var list = document.getElementsByTagName('*');
for(i=0; i<list.length; i++) {
if(list[i].id) arr.push(list[i].id);
alert(i +' --> '+arr[i])
}

}
</script>
Все элементы массива undefined

Мараторий 03.02.2010 23:55

Цитата:

Сообщение от SunYang (Сообщение 43468)
Все элементы массива undefined

Это неправда.

Вы запутались в индексах. Иногда метод вдумчивого чтения кода помогает.

JsLoveR 04.02.2010 02:13

SunYang, ну что же Вы путаетесь))
function go1() {
	var arr = [] // массив значений id
	var list = document.getElementsByTagName('*');
	for(i=0; i<list.length; i++) {
	if(list[i].id){
	arr.push(list[i].id);
	}
	
	}
	
 alert(arr);
	}

SunYang 04.02.2010 15:54

Спасибо. Помогло) Чета я совсем туплю)

SunYang 04.02.2010 22:15

А почему вот это
arr[i] = list[i].id;
выдает несколько элементов с id = undefined ?

PeaceCoder 04.02.2010 23:42

Цитата:

Сообщение от SunYang
выдает несколько элементов с id = undefined ?

потому что гладиолус ;)
Цитата:

Сообщение от SunYang
var list = document.getElementsByTagName('*');

эта команда выдает все элементы в том числе и HTML и HEAD и script и т.п. а у них нет id

JsLoveR 05.02.2010 01:28

А метод push() добавляет в массив id, которые определены.

SunYang 06.02.2010 19:36

снова столкнулся с проблемой...
Мне нужно записать id только элементов, к которым можно применить метод innerHTML
Это возможно?

Riim 06.02.2010 19:50

Цитата:

Сообщение от SunYang
метод innerHTML

метод?

JsLoveR 06.02.2010 20:58

Цитата:

Сообщение от SunYang (Сообщение 43778)
Мне нужно записать id только элементов, к которым можно применить метод innerHTML
Это возможно?

Не логично как-то, для чего Вам это надо? innerHTML - это свойство.

SunYang 06.02.2010 22:46

метод, свойство - я не особо разбираюсь. Я пытаюсь написать прогу (HTA-приложение), которая производит запись содержимого ячеек таблицы в файл, а при каждом открытии программы она считывает из файла данные, и вставляет их в ячейки таблицы. Т.к. с php и базами я вообще не знаком (плюс ко всему надо, чтобы прога работала без сервера), пытаюсь организовать что-то типа базы данных на JS
Программа представляет из себя поля ввода и таблицы, куда записываются введенные значения, и кнопки сохранения, чтобы введенные данные сохранить (записать в файл), а при открытии программы автоматически их от туда доставать и подставлять в таблицы.
Вот код:
<HTML>
 <HEAD> 
 <TITLE>Моя программа</TITLE> 
 <HTA:APPLICATION   APPLICATIONNAME="firstHTA"   BORDER=””  CAPTION="yes"  ICON="my.ico"  SHOWINTASKBAR="no"  SINGLEINSTANCE="yes"  SYSMENU="yes"  WINDOWSTATE="normal" ></HEAD><BODY BGCOLOR="ButtonFace" SCROLL="no">
 </HEAD>
 <BODY>
<script>

var filepath1 = "dbID.txt"
var filepath2 = "dbData.txt"


// функция сохранения массива с id-шниками в файл базы айдишников и массива с данными в файл базы с данными
function go1() {
arr = new Array(); // при запуске функции сохранения очищаем массив id-шников
arrData = new Array(); // при запуске функции сохранения очищаем массив данных

// массив значений ID
var list = document.getElementsByTagName('*');
	for(i=0; i<list.length; i++) {
	if(list[i].id){
	arr.push(list[i].id);
	}	
  }

// создаем файл базы данных и записываем строку (массив) с ID
var fso = new ActiveXObject("Scripting.FileSystemObject")
var myfile = fso.CreateTextFile(filepath1)
myfile.Close()
var opnfile = fso.OpenTextFile(filepath1, 2)
opnfile.WriteLine(arr)
opnfile.Close()
// создаем массив из вытащенной строки из файла базы айдишников
var arrStr = arr+'' // строка из массива ID (для разбиения на массив)
var arrID = arrStr.split(',') // массив id-шников

// создаем массив данных, соответствующих айдишникам
for(i=0; i<arrID.length; i++) {
Data = document.getElementById(arrID[i]).innerHTML
arrData[i] = Data // МАССИВ С ДАННЫМИ
}
// создаем файл базы данных и записываем построчно данные из массива с данными плюс разделитель
var fso = new ActiveXObject("Scripting.FileSystemObject")
var myfile = fso.CreateTextFile(filepath2)
myfile.Close()
var opnfile = fso.OpenTextFile(filepath2, 2)
for(i=0; i<arrData.length; i++) {
opnfile.WriteLine(arrData[i]+'_w') // _w - это разделитель для формирования массива данных. Используем его, так как использовать запятую как в случае с массивом айдишников нельзя, т.к. данные могут содержать числа с запятой  
}
opnfile.Close()

}  // Конец функции

// ФУНКЦИЯ ЗАПИСИ ДАННЫХ ИЗ БАЗ ДАННЫХ В ЯЧЕЙКИ ТАБЛИЦ
function go2() {
// вытаскиваем и преобразовываем в массив айдишники из файла базы с айдишниками
var fso = new ActiveXObject("Scripting.FileSystemObject")
var myfile = fso.OpenTextFile(filepath1, 1)
var strID = myfile.ReadLine()
myfile.Close()
var arrID = strID.split(',') // массив айдишников

var fso = new ActiveXObject("Scripting.FileSystemObject")
var myfile = fso.OpenTextFile(filepath2, 1)
var DataStr = myfile.ReadAll()
var DataArr = DataStr.split('_w') // МАССИВ С ДАННЫМИ
myfile.Close()

// записываем в таблицы значения из массива с данными, соответствующие айдишникам из массива с айдишниками
for(i=0; i<arrID.length; i++) {
document.getElementById(arrID[i]).innerHTML = DataArr[i]
}

} // конец функции

</script>



<input type="button" value="Сохранить" onclick="go1()">
<input type="button" value="Извлечь из БД" onclick="go2()">

<table width="600" border="1" cellspacing="0" cellpadding="0">
<tr>
<td align="center" id="a3">Data1</td>
<td align="center" id="b3">Data2</td>
<td align="center" id="c3">Data3</td>
<td align="center" id="d3">Data3</td>
</tr>
</table>
 </BODY>
 </HTML>

SunYang 06.02.2010 22:49

А вот так внешне выглядит реально то, для чего я это делаю:

Начало....
<table width="400" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td width="100">Месяц:</td>
    <td width="200"><input type="text" id="month"  /></td>
    <td width="100"><input type="button" value="Ввести" id="month_input" onclick="month()" /></td>
  </tr>
  <tr>
    <td>Год:</td>
    <td><input type="text" id="year" value=""/></td>
    <td><input type="button" value="Ввести" id="year_input" onclick="year()" /></td>
  </tr>
</table>
<p>&nbsp;</p>
<table width="600" border="0" cellspacing="0" cellpadding="0" >
  <tr>
    <td width="198" class="text1">Введите номер квартиры</td>
    <td width="402"><input type="text" id="kv" value="" /></td>
  </tr>
  <tr>
    <td class="text1">Стоят ли счетчики на ГВС/ХВС/Канализацию<strong></strong></td>
    <td><input type="button" value="есть" id="chYes" onclick="ch(1)" />&nbsp;&nbsp;
<input type="button" value="нет" id="chYes" onclick="ch(0)" />
</td>
  </tr>
  <tr>
    <td class="text1">Площадь квартиры</td>
    <td><span class="text1">
      <input type="text" value="" id="Ss" />
    </span></td>
  </tr>
  <tr>
    <td class="text1">Проживает, чел</td>
    <td><span class="text1">
      <input type="text" id="Xx" value=""/>
    </span></td>
  </tr>
  <tr>
    <td class="text1">Временно зарегестрированные, чел</td>
    <td><span class="text1">
      <input type="text"  id="Yy" value="" />
    </span></td>
  </tr>
  <tr>
    <td class="text1">Временно отсутствует</td>
    <td><span class="text1">
      <input type="text" id="Zz" value="" />
    </span></td>
  </tr>
  <tr>
    <td class="text1">Ф.И.О плательщика</td>
    <td><span class="text1">
      <input type="text" id="fio" value="" />
    </span></td>
  </tr>
  <tr>
    <td class="text1">&nbsp;</td>
    <td><input type="button" value="Ввести" id="kv_data" onclick="DataKv()" /></td>
  </tr>
</table>
<p>&nbsp;</p>
<table width="60%" border="0" cellspacing="0" cellpadding="0" align="center">
  <tr>
    <td class="text1" ><strong>Наименование тарифа</strong></td>
    <td class="text1" >Новый тариф</td>
    <td align="center" class="text1" >Заменить в платежках</td>
    <td align="center" class="text1" >Расчитать с новым тарифом</td>
  </tr>
  <tr>
    <td width="41%" ><span class="text1">Содержание и текущий ремонт</span></td>
    <td width="12%" ><input type="text" value="" id="a0"/></td>
    <td width="21%" align="center" ><input type="button" id="b0" value="Заменить" onclick="re0()"/></td>
    <td width="26%" align="center" ><input type="button" id="c0" value="Расчитать" /></td>
  </tr>
  <tr>
    <td ><span class="text1">Вывоз ТБО</span></td>
    <td ><input type="text" value="" id="a1"/></td>
    <td align="center" ><input type="button" id="b1" value="Заменить" /></td>
    <td align="center" ><input type="button" id="c1" value="Расчитать" /></td>
  </tr>
  <tr>
    <td class="text1" >ВДГО</td>
    <td ><input type="text" value="" id="a2"/></td>
    <td align="center" ><input type="button" id="b2" value="Заменить" /></td>
    <td align="center" ><input type="button" id="c2" value="Расчитать" /></td>
  </tr>
  <tr>
    <td class="text1" >Отопление</td>
    <td ><input type="text" value="" id="a3"/></td>
    <td align="center" ><input type="button" id="b3" value="Заменить" /></td>
    <td align="center" ><input type="button" id="c3" value="Расчитать" /></td>
  </tr>
  <tr>
    <td class="text1" >ГВС</td>
    <td ><input type="text" value="" id="a4"/></td>
    <td align="center" ><input type="button" id="b4" value="Заменить" /></td>
    <td align="center" ><input type="button" id="c4" value="Расчитать" /></td>
  </tr>
  <tr>
    <td class="text1" >Холодная вода</td>
    <td ><input type="text" value="" id="a5"/></td>
    <td align="center" ><input type="button" id="b5" value="Заменить" /></td>
    <td align="center" ><input type="button" id="c5" value="Расчитать" /></td>
  </tr>
  <tr>
    <td class="text1" >Канализация</td>
    <td ><input type="text" value="" id="a6"/></td>
    <td align="center" ><input type="button" id="b6" value="Заменить" /></td>
    <td align="center" ><input type="button" id="c6" value="Расчитать" /></td>
  </tr>
  <tr>
    <td class="text1" >Лифт</td>
    <td ><input type="text" value="" id="a7"/></td>
    <td align="center" ><input type="button" id="b7" value="Заменить" /></td>
    <td align="center" ><input type="button" id="c7" value="Расчитать" /></td>
  </tr>
  <tr>
    <td class="text1" >Кап. ремонт</td>
    <td ><input type="text" value="" id="a8"/></td>
    <td align="center" ><input type="button" id="b8" value="Заменить" /></td>
    <td align="center" ><input type="button" id="c8" value="Расчитать" /></td>
  </tr>
  <tr>
    <td class="text1" > Электроэнергия</td>
    <td ><input type="text" value="" id="a9"/></td>
    <td align="center" ><input type="button" id="b9" value="Заменить" /></td>
    <td align="center" ><input type="button" id="c9" value="Расчитать" /></td>
  </tr>
  <tr>
    <td class="text1" >ТО индивидуал. газ оборудован.</td>
    <td ><input type="text" value="" id="a10"/></td>
    <td align="center" ><input type="button" id="b10" value="Заменить" /></td>
    <td align="center" ><input type="button" id="c10" value="Расчитать" /></td>
  </tr>
</table>
<p>&nbsp;</p>

...это откуда вводятся данные в квитанцию

SunYang 06.02.2010 22:50

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

<table align="center" width="90%" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td width="20%" style=" padding:30px; border-right:#000000 solid 2px;" valign="top"><p>Извещение</p>
    <p>&nbsp;</p></td>
    <td width="80%" style=" padding:10px; border-bottom:#000000 solid 2px;"><p><strong>Лицевой счет № <span id="kv1">1</span></strong><br />
Членские взносы на ремонт и содержание жилья за <strong><span id="month_1">{МЕСЯЦ}</span> <span id="year_1">{ГОД}</span></strong><br />
Получатель платежа: ТСЖ &quot;Галкина-8&quot;<br />
<font class="text1">ИНН/КПП 5249098240/524901001 Р/сч 40703810008260000050 К/сч 30101810700000000826 БИК 04227<br />
Банк получателя платежа: ОАО "АКБ Саровбизнесбанк Нижегородская обл. г. Дзержинск"</font><br />
<strong>ПЛАТЕЛЬЩИК: <span id="fio_1">{ПЛАТЕЛЬЩИК}</span></strong><br />
<strong>АДРЕС: г. ДЗЕРЖИНСК, ГАЛКИНА 8, кв. <span id="kv_1">1</span></strong></p>
      <p>&nbsp;</p>
      <table width="80%" border="0" cellspacing="0" cellpadding="0">
        <tr>
          <td width="50%" align="left"> <p><em><strong>сумма к оплате</strong></em> <font class="summa"><strong> {сумма} </strong></font></p></td>
          <td width="50%" align="right" class="text1">Подпись плательщика _______________</td>
        </tr>
      </table>
   </td>
  </tr>
  <tr>
    <td  style=" padding:30px; border:#000000 solid 2px; border-bottom:none; border-left:none;" valign="top">Квитанция</td>
    <td style=" padding:10px;"><p>&nbsp;</p>
      <p><strong>Лицевой счет № 1</strong><br />
        Членские взносы на ремонт и содержание жилья за <strong><span id="month_2">{МЕСЯЦ}</span> <span id="year_2">{ГОД}</span></strong><br />
        Получатель платежа: ТСЖ &quot;Галкина-8&quot;<br />
        <font class="text1">ИНН/КПП 5249098240/524901001 Р/сч 40703810008260000050 К/сч 30101810700000000826 БИК 04227<br />
        Банк получателя платежа: ОАО &quot;АКБ Саровбизнесбанк Нижегородская обл. г. Дзержинск&quot;</font><br />
        <strong>ПЛАТЕЛЬЩИК: <span id="fio2_1">{ПЛАТЕЛЬЩИК}</span></strong><br />
        <strong>АДРЕС: г. ДЗЕРЖИНСК, ГАЛКИНА 8, кв. 1</strong></p>
      <p class="text1">Прожиает <strong><span id="Xx_1">{Xx}</span></strong> чел, врем зарегистр. <strong><span id="Yy_1">{Yy}</span></strong> чел, врем. отсутств. <strong><span id="Zz_1">{Zz}</span></strong> чел, площадь общая <strong><span id="Ss_1">{Ss}</span></strong> кв.м.</p>
      <table width="100%" border="0" cellspacing="0" cellpadding="0" class="TDone" style="border-collapse:collapse;">
        <tr>
          <td colspan="7" style="padding-left:10px; border:#000000 solid 2px;"><font class="text1">Счетчик</font></td>
        </tr>
        <tr>
          <td width="28%" align="center" class="text1"><strong>Наименование Услуги</strong></td>
          <td width="12%" align="center" class="text1">Размеры платы руб/кв.м руб/чел</td>
          <td width="12%" align="center" class="text1">КОЛ-ВО</td>
          <td width="12%" align="center" class="text1">Стоимость по тарифу, руб.</td>
          <td width="12%" align="center" class="text1">Перерасчет услуг, руб</td>
          <td width="12%" align="center" class="text1"><strong>Начислено</strong>, руб</td>
        </tr>
        <tr>
          <td class="text1">Содержание и текущий ремонт</td>
          <td align="center">&nbsp;</td>
          <td align="center" id="kolSs_1_1">&nbsp;</td>
          <td align="center">&nbsp;</td>
          <td align="center">&nbsp;</td>
          <td align="center">&nbsp;</td>
        </tr>
        <tr>
          <td class="text1">Вывоз ТБО</td>
          <td align="center" id="1_a1">&nbsp;</td>
          <td align="center" id="kolSs_1_2">&nbsp;</td>
          <td align="center">&nbsp;</td>
          <td align="center">&nbsp;</td>
          <td align="center">&nbsp;</td>
        </tr>
        <tr>
          <td class="text1">ВДГО</td>
          <td align="center" id="1_a2">&nbsp;</td>
          <td align="center" id="kolSs_1_3">&nbsp;</td>
          <td align="center">&nbsp;</td>
          <td align="center">&nbsp;</td>
          <td align="center">&nbsp;</td>
        </tr>
        <tr>
          <td class="text1">Отопление</td>
          <td align="center" id="1_a3">&nbsp;</td>
          <td align="center" id="kolSs_1_4">&nbsp;</td>
          <td align="center">&nbsp;</td>
          <td align="center">&nbsp;</td>
          <td align="center">&nbsp;</td>
        </tr>
        <tr id="gvs_1">
          <td class="text1">ГВС</td>
          <td align="center" id="1_a4">&nbsp;</td>
          <td align="center" id="kolXx_1_1">&nbsp;</td>
          <td align="center">&nbsp;</td>
          <td align="center">&nbsp;</td>
          <td align="center">&nbsp;</td>
        </tr>
        <tr id="hvs_1">
          <td class="text1">Холодная вода</td>
          <td align="center" id="1_a5">&nbsp;</td>
          <td align="center" id="kolXx_1_2">&nbsp;</td>
          <td align="center">&nbsp;</td>
          <td align="center">&nbsp;</td>
          <td align="center">&nbsp;</td>
        </tr>
        <tr id="kan_1">
          <td class="text1">Канализация</td>
          <td align="center" id="1_a6">&nbsp;</td>
          <td align="center" id="kolXx_1_3">&nbsp;</td>
          <td align="center">&nbsp;</td>
          <td align="center">&nbsp;</td>
          <td align="center">&nbsp;</td>
        </tr>
        <tr>
          <td class="text1">Лифт</td>
          <td align="center" id="1_a7">&nbsp;</td>
          <td align="center" id="kolSs_1_5">&nbsp;</td>
          <td align="center">&nbsp;</td>
          <td align="center">&nbsp;</td>
          <td align="center">&nbsp;</td>
        </tr>
        <tr>
          <td class="text1">Кап. ремонт</td>
          <td align="center" id="1_a8">&nbsp;</td>
          <td align="center" id="kolSs_1_6">&nbsp;</td>
          <td align="center">&nbsp;</td>
          <td align="center">&nbsp;</td>
          <td align="center">&nbsp;</td>
        </tr>
        <tr>
          <td class="text1"> Электроэнергия</td>
          <td align="center" id="1_a9">&nbsp;</td>
          <td align="center" id="kolXx_1_4">&nbsp;</td>
          <td align="center">&nbsp;</td>
          <td align="center">&nbsp;</td>
          <td align="center">&nbsp;</td>
        </tr>
        <tr>
          <td class="text1">ТО индивидуал. газ оборудован.</td>
          <td align="center" id="1_a10">&nbsp;</td>
          <td align="center" id="kolSs_1_7">&nbsp;</td>
          <td align="center">&nbsp;</td>
          <td align="center">&nbsp;</td>
          <td align="center">&nbsp;</td>
        </tr>
        <tr>
          <td align="right"><strong>ИТОГО:</strong></td>
          <td colspan="2" style="border:none;">&nbsp;</td>
          <td>&nbsp;</td>
          <td colspan="2" align="right"> <strong>{сумма}</strong></td>
        </tr>
        <tr>
          <td colspan="7" style="border:none;" align="right">Итого к оплате: <strong>{сумма}</strong></td>
        </tr>
      </table>      
    <p class="text1">&nbsp;</p></td>
  </tr>
</table>


Все расчеты вроде сделал, осталось дописать только функцию сохранения. А исключить id-шники полей ввода, хочу, т.к. данные из базы будут подставляться только в образец квитанции.

Помогите плиииз))


Часовой пояс GMT +3, время: 03:33.