Правильный способ заменить текст в элементе E4X - PullRequest
2 голосов
/ 26 ноября 2010

Я пытаюсь удалить двойные кавычки из текстовых узлов. Работает следующий код:

var cars = <cars>
             <buick>
                <color>
                   "Blue"
                </color>
             </buick>
             <chevy>
                <color>
                   "Red"
                </color>
             </chevy>
           </cars>;

for each (elem in cars)
   for each (item in elem.*)
      elem[item.localName()] = item.text().toString().replace(/"/g,'');

Однако я не чувствую себя комфортно из-за конструкции elem [item.localName ()] =. Действительно, у меня уже есть указатель на текстовый элемент, и было бы намного логичнее использовать что-то вроде:

item = item.text().toString().replace(/"/g,'');

К сожалению, этот код, похоже, не выполняет то, что должен делать. Есть идеи почему? Как правильно это сделать?

Ответы [ 2 ]

1 голос
/ 19 января 2012

Попробуйте, пожалуйста:

for each (var color in cars.*.*)
  color.* = color.toString().replace(/"/g,'');
1 голос
/ 26 ноября 2010

Где вы используете этот код? Потому что у меня в Firefox все работает нормально.

И вот так (попробуйте и дайте мне знать, сработало ли это для вас):

for each (txt in cars..*.text()){
    txt.parent().setChildren( txt.toString().replace(/"/g,'') );
}
...