2013-09-11 1 views
1

Вот мой вопрос. Мне нужно создать href = (..), используя DOM, и href должен содержать некоторый амперсанд.Амперсанд (& amp;) не ускользнул в DOM, созданный href

Что я сделал:

var anchor = document.createElement('a'); 
    var link = "../php/page.php?id=100&mode=edit"; 
    anchor.setAttribute("href", link); 
    parent.appendChild(anchor); 

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

+0

также: http://stackoverflow.com/questions/355043/how-do-escape-an-ampersand-in-a-javascript-string-so-that-the-page-will-valida – ShinTakezou

ответ

1

Вы изменяете DOM с помощью JavaScript, а не создаете HTML-код. JavaScript не является HTML. & в строке строки текста в буквах означает & не &. Просто скажите &.

var link = "../php/page.php?id=100&mode=edit"; 

Обратите внимание, что если вы пытаетесь использовать это в теле элемента сценария в XHTML документе выше, не верно (но если вы обслуживаете документ как text/html то браузеры будут рассматривать его как HTML и не XHTML). Дополнительную информацию см. На странице compatibility guidelines. Я бы избежал проблемы, не используя XHTML, она добавляет сложности, но почти ни один разработчик не получит никакой пользы от ее использования.

+0

ОК но если я использую & вместо &, валидатор w3c говорит мне, что мне нужно использовать & Как я могу сгенерировать правильный HTML-код с помощью DOM? – user2768957

+0

@ user2768957 - Если валидатор говорит вам использовать '&', то вы почти наверняка используете XHTML. См. Ссылку в последнем абзаце ответа. – Quentin

+0

Я постараюсь быть более ясным. Я использую HTML 4 (strict.dtd) и Javascript в отдельном файле. В HTML-файле нет кода. Код предназначен для экзамена, и преподаватели будут проверять HTML с помощью букмарклета (который извлекает весь HTML-код, сгенерированный с помощью DOM). Это означает, что все ссылки, которые я создаю, содержат &, а не &, и это вызывает ошибку в валидаторе W3C! – user2768957

0

& не будет автоматически экранирован, если вы установите href свойство anchor в Javascript.

См. this question о том, как динамически заменить эту строку.