Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   XML и JavaScript - вопрос новичка (https://javascript.ru/forum/misc/48030-xml-i-javascript-vopros-novichka.html)

KLD 17.06.2014 09:44

XML и JavaScript - вопрос новичка
 
Добрый день.

Сильно не пинайте, если что не так. В HTML и JavaScript полный ноль, только познакомился.
Постараюсь корректно задать вопрос. Суть дела в следующем. В наследство отделу досталась программа, разработчик которой уволился. Потребовалось изменить выходную форму HTML, которая формируется на наборе XML данных сформированных программно.

...
<td class="tHead1" nowrap align="right">Маркировка на упаковке:</td>
<td class="tHead2" width="20%"><span datafld="MarkPack">&nbsp;</span></td>
...

Необходимо при формировании HTML странички связанные данные из поля "MarkPack" вывести в нужном мне формате, а не в том как они хранятся в динамически сформированном XML файле. Такое возможно сделать с помощью JavaScripta ?

jsnb 17.06.2014 11:24

Цитата:

Сообщение от KLD (Сообщение 316866)
Необходимо при формировании HTML странички связанные данные из поля "MarkPack" вывести в нужном мне формате, а не в том как они хранятся в динамически сформированном XML файле. Такое возможно сделать с помощью JavaScripta ?

Не понял, что за связанные данные и как оно там с XML у вас взаимодействует, но JS может манипулировать DOM (HTML) как угодно.

KLD 17.06.2014 11:37

Жаль не поняли меня.
Попробую еще раз. Возможно ли вместо записи

...
<td class="tHead1" nowrap align="right">Маркировка на упаковке:</td>
<td class="tHead2" width="20%"><span datafld="MarkPack">&nbsp;</span></td>
...

использовать что-то похожее на следующее, если да, то подскажите как правильно это можно организовать, пожалуйста.

<xml id="XMLDATA" ondatasetcomplete="InitNote();">
</xml>
..
<SCRIPT LANGUAGE=" JavaScript">
function StrFields()
{
ResultDiv.innerHTML=XMLDATA.RecordSet.Fields("Mark Pack").value;
// на самом деле весь сыр бор из-за этого, здесь предполагается необходимая обработка значения поля "MarkPack" и вывод полученного результата в HTML документ.
}
...
<td class="tHead1" nowrap align="right">Маркировка на упаковке:</td>
<td class="tHead2" width="20%"><div id="ResultDiv"></div></td>
...

пробовал что-то подобное, не получается... не знаю к какому и как обработчику события нужно преобразование привязать.

P.S. Очень надеюсь, что сейчас хоть немного сумел объяснить что необходимо и в чем проблема.

jsnb 17.06.2014 12:07

Цитата:

Сообщение от KLD (Сообщение 316895)
P.S. Очень надеюсь, что сейчас хоть немного сумел объяснить что необходимо и в чем проблема.

Увы, лично я так ничего и не понял. Какие-то разрозненные куски XML, HTML и JS. Надо в результирующем HTML формат каких-то данных поменять или что? Речь вообще о браузерном JS или нет?

Aetae 17.06.2014 13:30

Покажите кусок который "формирует траницу", покажите результат формирования, покажите как этот результат должен выглядеть по новому.

Никто не знает что у вас там где и как формируется. Способов описанных действий огромное множество.

KLD 25.06.2014 05:46

Попробуем по другому.

Подскажите почему в первом случае срабатывает динамическая корректировка значения тэга DIV, а во втором случае нет ? И как добиться чтобы и во втором случае динамически изменять содержимое тэга с id="blockText1"?

Первый пример:
<html>
<head>
<title></title>
</head>
<body>
<div id="blockText1">Тут будет первый текст</div>
<div id="blockText2">Тут будет второй текст</div>
<script type="text/javascript">
var tDiv = document.getElementById("blockText1");
var tStr = tDiv.innerText;
document.getElementById("blockText1").innerHTML="T est - "+tStr.substr(17,5)+tStr.substr(4,5)+tStr.substr(1 0,6)+tStr.substr(0,3);
document.getElementById("blockText2").innerHTML="T est - "+tDiv.getAttribute('innerHTML');
</script>
</body>
</html>

Второй пример:
<HTML>
<HEAD>
<TITLE>Отображение иерархической структуры записей вложенными таблицами</TITLE>
</HEAD>

<BODY>
<xml id="dsoЗаказчик" src="333.xml"></xml>
<td>
<table datasrc="#dsoЗаказчик" datafld="Компания">
<tr>
<td><div id="blockText1" datafld="факс"></div></td>
</tr>
<tr>
<td><div id="blockText2">Вторая строчка</div></td>
</tr>
<script type="text/javascript">
var tDiv=document.getElementById("blockText1");
var tmptext=tDiv.innerText;
document.getElementById("blockText1").innerHTML="T est - "+tmptext.substr(0,3);
document.getElementById("blockText2").innerHTML="T est - "+tDiv.getAttribute('innerHTML');
</script>
</table>
</td>

</BODY>
</HTML>

где 333.xml к примеру
<?xml version="1.0" encoding="windows-1251" ?>
<Заказчики>
<Заказчик Фамилия="Иванов">
<Компания телефон="149-521" факс="149-522" >МКС</Компания>
</Заказчик>
<Заказчик Фамилия="Петров">
<Компания телефон="123-456" факс="123-455" >Спецвузавтоматика</Компания>
</Заказчик>
<Заказчик Фамилия="Бэндер">
<Компания телефон="отключен" факс="в залоге" >Рога и копыта</Компания>
</Заказчик>
</Заказчики>

jsnb 25.06.2014 14:23

Так попробуйте:
<HTML>
 <HEAD>
 <TITLE>Отображение иерархической структуры записей вложенными таблицами</TITLE>
 </HEAD>

 <BODY>
 <xml id="dsoЗаказчик" src="333.xml"></xml> 

 <table datasrc="#dsoЗаказчик" datafld="Компания"> 
 <tr> 
   <td><div id="blockText1" datafld="факс"></div></td><td>
 </tr>
 <tr> 
   <td><div id="blockText2">Вторая строчка</div></td> 
 </tr> 
 </table> 

 <script type="text/javascript">
 
 window.onload = function() {
   var tDiv = document.getElementById("blockText1");
   var tmptext = tDiv.innerText;
   document.getElementById("blockText1").innerHTML="Test - " + tmptext.substr(0,3);
   document.getElementById("blockText2").innerHTML="Test - " + tDiv.innerHTML;
 }
 
 </script>
 </BODY>
 </HTML>

KLD 26.06.2014 03:49

Спасибо !

KLD 26.06.2014 04:21

Еще один вопрос.
А из html странички можно скриптом изменить в xml документе значение поля "факс" к примеру ?

Aetae 26.06.2014 07:20

var tmptext = tDiv.innerText || tDiv.textContent;
иначе в firefox работать не будет.


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