проверочный код с <a> <noscript>

0

У меня большая проблема с проверкой HTML 4.01

<li class="exampleclass">
    <noscript>
        <a href="http://www.skni.pl/index.html">  
    </noscript>

    <span id="showLoginboxButton" style="cursor: pointer;">Login</span>

    <noscript></a></noscript>

</li>

Как я могу это исправить? Я получаю такую ошибку

end для элемента "A", который не открыт

... nboxButton "style =" cursor: pointer; "> Вход

Validator обнаружил конечный тег для вышеуказанного элемента, но этот элемент в настоящее время не открыт. Это часто вызвано остатком конечного тега из элемента, который был удален во время редактирования, или неявным закрытым элементом (если у вас есть ошибка, связанная с элементом, который используется там, где это недопустимо, это почти наверняка имеет место). В последнем случае эта ошибка исчезнет, как только вы исправите исходную проблему.

Если эта ошибка возникла в разделе сценария вашего документа, вы, вероятно, должны прочитать эту запись в FAQ.

Теги:
validation

2 ответа

4

Обратите внимание, как организован ваш код:

<li class="exampleclass">
    <noscript>
        <a href="http://www.skni.pl/index.html">
    </noscript>
    <span id="showLoginboxButton" style="cursor: pointer;">Login</span>
    <noscript>
        </a>
    </noscript>
</li>

Вы закрываете <noscript> перед закрытием <a>.

Вы не можете делать такое перемежение тегов в HTML (или XML): каждый тег должен быть закрыт в том порядке, в котором он был открыт. Если тег был открыт внутри другого элемента, он должен быть закрыт до закрытия внешнего элемента. Если это правило не соблюдается, произойдет ошибка проверки.


Чтобы достичь желаемого, вы можете сделать что-то вроде:

<li class="exampleclass">
    <span id="showLoginboxButton" style="cursor: pointer; display: none">Login</span>
    <script type="text/javascript">
        document.getElementById('showLoginboxButton').style.display = 'inline';
    </script>
    <noscript>
        <a href="http://www.skni.pl/index.html">Login</a>
    </noscript>
</li>

В основном вы скрываете #showLoginboxButton и показываете его только в том случае, если включен JavaScript.

Конечно, как обычно, старайтесь избегать встроенных стилей и тегов скриптов. Я добавил их там, например, для целей, вы должны в конечном итоге использовать класс CSS и код JavaScript где-то более подходящим.

0

@acdcjunior дал хорошее объяснение того, что происходит с точки зрения синтаксиса и достоверности HTML. С практической стороны лучший подход заключается в том, чтобы избежать элемента noscript (как это предлагается в проектах HTML5) и применить принцип ненавязчивого JavaScript. В этом случае вы могли бы написать

<li class="exampleclass">
    <a href="http://www.skni.pl/index.html" id="showLoginboxButton">Login</a>
</li>

и делать остальные в CSS и JavaScript. Ваш JavaScript назначил обработчик onclick элементу a чтобы он выполнял то, что должен делать скрипт, и в конечном итоге возвращает false или иным образом прерывает обычную обработку ссылок (при необходимости - я действительно не могу видеть, как вы могли бы значимо сделать логин без серверной стороны действие.

Или, может быть, это должна быть button. Операция входа в систему действительно вызывает кнопку действия, а не ссылку.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню