2013-03-26 2 views
0

Я хочу заменить значок квадрата (текст в элементе span в файле html: ■) со стрелкой: ►. Это происходит, когда этот значок перед пунктом меню соответствует его идентификатору страницы, поэтому посетитель знает, что он находится на странице, указанной этим пунктом меню.Заменить текст элемента span

Я прошел через множество вопросов, но застрял с этим.

var newIcon = "►"; // arrow icon 
for (var j = 0; j < rightMenuIDs.length; j++){ 
    var thisID = rightMenuIDs[j]; 
    var thisSpanIcon = rightMenu[j].children[0].children[0].childNodes[0].nodeValue; 
    if(thisID === bodyIDsliced){ 
     thisSpanIcon = newIcon; 
    } 
} 

Я проверил с console.log, он говорит, что thisSpanIcon обновлен как значок стрелки. Но на странице ничего не изменилось. Я попробовал replace() и другие методы безрезультатно.

Может ли кто-то лежать на мне, если есть лучший/правильный способ сделать это?

спасибо!

+0

Нам нужно знать, что представляют эти переменные. – Jivings

+0

Переменная меняется, но содержимое на странице отсутствует. Это должно работать: 'rightMenu [j] .children [0] .children [0] .childNodes [0] .nodeValue = newIcon;' Или вы можете установить 'thisSpanIcon = rightMenu [j] .children [0] .children [0 ] .childNodes [0] ', а затем' thisSpanIcon.nodeValue = newIcon' –

+0

@ Повсюду нет, это довольно очевидно ... – Alnitak

ответ

1

Когда вы говорите:

thisSpanIcon = newIcon; 

вы просто переписав локальную переменную thisSpanIcon, которая содержит копию существующего узла nodeValue имущества, не изменяя свойства (а оттуда узел) сам.

Try:

var thisSpanNode = rightMenu[j].children[0].children[0].childNodes[0]; 
if (thisID === bodyIDsliced) { 
    thisSpanNode.nodeValue = newIcon; 
} 

, который должен изменить фактическое свойство узла вместо.

Также обратите внимание, что вы должны использовать формат Unicode для строки вместо объекта HTML, то есть \u25ba.

+0

Вот некоторые откровения. Наверное, это какой-то нюанс, который мне пришлось бы потратить некоторое время на обдумывание. – cybercow69

+0

Если я могу продолжить эту тему, слегка заблудиться: ► на самом деле не выглядит красиво, как сплошная стрелка вправо. Является ли это тем, как я помещаю сущность или я должен использовать «значок шрифта», чтобы исправить это? – cybercow69

+0

не знаю, это будет зависеть от того, какая у вас система. Попробуйте посмотреть http://www.fileformat.info/info/unicode/char/25ba/fontsupport.htm – Alnitak

-1

Чтобы обновить текст элемента/узла, вы должны работать с elem.innerHTML или elem.innerText. (little example)

Кроме того, поиск современного способа выбора элементов.

+0

'node.nodeValue' совершенно легально. – Alnitak

+0

Спасибо за выбор совета @Wouter J Я только начал практиковать JavaScript. Поэтому я подумал, что лучше начать с какого-то старого школьного способа, чтобы убедиться, что я получу фундамент правильно. – cybercow69

+1

@ cybercow69 хороший план - правильно понять, например. jQuery, гораздо лучше сначала разобраться в обходном пути DOM. – Alnitak

Смежные вопросы