Обработка двоеточия в идентификаторе элемента в селекторе CSS [дубликат]

NullPointerException s - исключения, возникающие при попытке использовать ссылку, которая указывает на отсутствие местоположения в памяти (null), как если бы она ссылалась на объект. Вызов метода по нулевой ссылке или попытка получить доступ к полю нулевой ссылки вызовет функцию NullPointerException. Они наиболее распространены, но другие способы перечислены на странице NullPointerException javadoc.

Вероятно, самый быстрый пример кода, который я мог бы придумать для иллюстрации NullPointerException, be:

public class Example {

    public static void main(String[] args) {
        Object obj = null;
        obj.hashCode();
    }

}

В первой строке внутри main я явно устанавливаю ссылку Object obj равной null. Это означает, что у меня есть ссылка, но она не указывает на какой-либо объект. После этого я пытаюсь обработать ссылку так, как если бы она указывала на объект, вызывая метод на нем. Это приводит к NullPointerException, потому что нет кода для выполнения в местоположении, на которое указывает ссылка.

(Это техничность, но я думаю, что она упоминает: ссылка, которая указывает на null, равна 't то же, что и указатель C, указывающий на недопустимую ячейку памяти. Нулевой указатель буквально не указывает на в любом месте , который отличается от указаний на местоположение, которое оказывается недопустимым.)

139
задан BoltClock 27 February 2015 в 17:12
поделиться

4 ответа

Обратная косая черта:

input#search_form\:expression {  ///...}
111
ответ дан 23 November 2019 в 23:21
поделиться

Используя обратную косую черту, прежде чем двоеточие не работает во многих версиях IE (особенно 6 и 7; возможно другие).

обходное решение А должно использовать шестнадцатеричный код для двоеточия - который является примером \3A

:

input#search_form\3A expression {  }

Это работает во всех браузерах: Включая IE6 + (и возможно ранее?), Firefox, Chrome, Opera, и т.д. Это - часть стандарт CSS2 .

91
ответ дан 23 November 2019 в 23:21
поделиться

Можно выйти из него с обратной косой чертой

input#search_form\:expression {
  ///...
}

От Символы Спецификации

4.1.3 CSS и случай

, следующие правила всегда содержат:

Все таблицы стилей CSS нечувствительны к регистру, за исключением частей, которые не находятся под контролем CSS. Например, чувствительность к регистру значений HTML-атрибутов "идентификатор" и "класс", имен шрифтов, и URIs находится вне объема этой спецификации. Обратите внимание в особенности, что имена элементов нечувствительны к регистру в HTML, но чувствительны к регистру в XML. В CSS идентификаторы (включая имена элементов, классы и идентификаторы в селекторах) могут содержать только символы [a-z0-9] и символы U+00A1 ISO 10646 и выше плюс дефис (-) и подчеркивание (_); они не могут запустить с цифры или дефиса, сопровождаемого цифрой. Идентификаторы могут также содержать оставленные символы и любой символ ISO 10646 как цифровой код (см. следующий объект). Например, идентификатор "B& W?" может быть записан как "B\& W \?" или "B\26 W\3F". Обратите внимание, что Unicode является кодом кодом, эквивалентным ISO 10646 (см. [UNICODE] и [ISO10646]).

В CSS 2.1, обратная косая черта () символ указывает на три типа символьных Escape. Во-первых, в строке, обратная косая черта, сопровождаемая новой строкой, проигнорирована (т.е. строка, как считают, не содержит или обратную косую черту или новую строку).

119-секундный, это отменяет значение специальных символов CSS. Любого символа (кроме шестнадцатеричной цифры) можно оставить с обратной косой чертой для удаления ее особого значения. Например, "\"" строка, состоящая из одной двойной кавычки. Препроцессоры таблицы стилей не должны удалять эти обратные косые черты из таблицы стилей, так как это изменило бы значение таблицы стилей.

В-третьих, Escape обратной косой черты позволяют авторам обращаться к символам, они не могут легко вставить документ. В этом случае обратная косая черта сопровождается самое большее шестью шестнадцатеричными цифрами (0.. 9 А.. F), которые обозначают символ ISO 10646 ([ISO10646]) с тем числом, которое не должно быть нулем. (Это не определено в CSS 2.1, что происходит, если таблица стилей действительно содержит символ с нулем кодовой точки Unicode.), Если символ в диапазоне [0-9a-f] следует за шестнадцатеричным числом, конец числа должен быть ясно дан понять. Существует два способа сделать это:

с пространством (или другой пробельный символ): "\26 B" (" & B"). В этом случае агенты пользователя должны рассматривать пару "CR/LF" (U+000D/U+000A) как единственный пробельный символ. путем обеспечения точно 6 шестнадцатеричных цифр: "\000026B" (" & B"), На самом деле эти два метода могут быть объединены. Только один пробельный символ проигнорирован после шестнадцатеричного Escape. Обратите внимание, что это означает, что "реального" пространства после escape-последовательности нужно самостоятельно или оставить или удвоить.

, Если число вне диапазона, позволенного Unicode (например, "\110000" выше максимума 10FFFF позволен в текущем Unicode), UA может заменить Escape "символом замены" (U+FFFD). Если символ должен быть отображен, UA должен показать видимый символ, такой как глиф "отсутствующего символа" (cf. 15.2, укажите 5).

Примечание: Escape Обратной косой черты, где позволено, всегда считаются частью идентификатора или строки (т.е. "\7B" не является пунктуацией, даже при том, что "{", и "\32" позволяется в начале имени класса, даже при том, что "2" не). Идентификатор "te\st" является точно тем же идентификатором как "тест".

5
ответ дан 23 November 2019 в 23:21
поделиться

У меня была такая же проблема с двоеточиями, и я не мог их изменить (не мог получить доступ к коду, выводящему двоеточия), и я хотел получить их с помощью селекторов CSS3 с jQuery.

Я поместил это здесь, потому что это может быть полезно для кого-то

input [id = "something: something"] отлично работает в селекторах jQuery, а также может работать в таблицах стилей (могут быть проблемы с браузером)

4
ответ дан 23 November 2019 в 23:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: