|
|
Да, просто замени весь шаблон на этот:
|

06.01.2017, 19:19
|
|
Новичок на форуме
|
|
Регистрация: 06.01.2017
Сообщений: 8
|
|
|
не работает getElementsByTagName( 'Field' )
помогите, пожалуйста!
есть xml вида
<Receipt>
<Field>
<Text>значение1</Text>
</Field>
<Field>
<Text>значение2</Text>
</Field>
</Receipt>
задача- вытащить поля "значение1" и "значение2".
пробую сделать это так
var textfield = receipt[a].getElementsByTagName( 'Field' );
for( var b = 0; b < textfield.length; b++ ) {
txtString += textfield[b].getElementsByTagName('Text')[0].childNodes[0].nodeValue + " \n ";
}
не работает, вероятно из-за большой буквы F в 'Field' ( если поставить в xml и в коде 'field', то все работает, но xml-ку изменить не могу)
Вопрос - почему не работает getElementsByTagName( 'Field' );
и как это исправить, не затрагивая текст исходного xml?
|
|

06.01.2017, 20:06
|
 |
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,156
|
|
|
AlaP,
textfield.length чему равно?
|
|

06.01.2017, 21:31
|
|
Новичок на форуме
|
|
Регистрация: 06.01.2017
Сообщений: 8
|
|
|
var receipt = xmlDoc.getElementsByTagName( 'Receipt' );
for ( var a = 0; a < receipt.length; a++) {
var textfield = receipt[a].getElementsByTagName( 'field' );
for( var b = 0; b < textfield.length; b++ ) {...}}
т е, если я все правильно делаю(и понимаю), textfield.length =2
|
|

06.01.2017, 21:36
|
|
Аспирант
|
|
Регистрация: 13.07.2013
Сообщений: 94
|
|
|
AlaP,
А вы в консоль фактическое значение выведите.
|
|

06.01.2017, 21:36
|
|
Новичок на форуме
|
|
Регистрация: 06.01.2017
Сообщений: 8
|
|
|
кстати, вот на этом куске кода выдается : Microsoft JScript runtime error: Object required
но если написать var textfield = receipt[a].getElementsByTagName( 'field' );
(и, соответсвенно, поменять в исходной xml заглавную букву на строчную), то все работает. к сожалению такой вариант мне не подходит из-за огромного количества данных.
в общем, поэтому и возник вопрос (теоретической базы у меня маловато).
|
|

06.01.2017, 21:40
|
|
Новичок на форуме
|
|
Регистрация: 06.01.2017
Сообщений: 8
|
|
Сообщение от TestUser013
|
AlaP,
А вы в консоль фактическое значение выведите.
|
я б с удовольствием. но на мои 100+ файлов долго считать вручную(
|
|

06.01.2017, 21:42
|
 |
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,156
|
|
AlaP,
txtString += textfield[b].getElementsByTagName('Text')[0].textContent + " \n ";
|
|

06.01.2017, 21:44
|
|
Новичок на форуме
|
|
Регистрация: 06.01.2017
Сообщений: 8
|
|
Сообщение от рони
|
AlaP,
txtString += textfield[b].getElementsByTagName('Text')[0].textContent + " \n ";
|
не срабатывает. выдается Microsoft JScript runtime error: Object required
innerText тоже пробовала. результат тот же.
|
|

06.01.2017, 21:49
|
 |
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,156
|
|
AlaP,
<?xml version="1.0" encoding="UTF-8"?>
<recipe type="dessert">
<Receipt>
<Field>
<Text>значение1</Text>
</Field>
<Field>
<Text>значение2</Text>
</Field>
</Receipt>
</recipe>
<script>
var txtString ='';
var textfield = document.getElementsByTagName( 'Field' );
for( var b = 0; b < textfield.length; b++ ) {
txtString += textfield[b].getElementsByTagName('Text')[0].textContent + " \n ";
}
alert(txtString)
</script>
|
|

06.01.2017, 22:05
|
|
Новичок на форуме
|
|
Регистрация: 06.01.2017
Сообщений: 8
|
|
Сообщение от рони
|
AlaP,
<script>
var txtString ='';
var textfield = document.getElementsByTagName( 'Field' );
for( var b = 0; b < textfield.length; b++ ) {
txtString += textfield[b].getElementsByTagName('Text')[0].textContent + " \n ";
}
alert(txtString)
</script>[/html]
|
вижу, что работает! это очень круто) и я себя чувствую окончательным пеньком, потому что у меня так и не запускается...
тогда есть еще вопрос - может такая ошибка быть из-за того, что я запускаю через отдельный файл(example.js) и потом пытаюсь записать результаты в txt?
|
|
|
|