Почему 2 мод 4 = 2?

Когда вы передаете строку разметки в $, она анализируется как HTML, используя свойство innerHTML браузера на

(или другой подходящий контейнер для особых случаев, таких как ). innerHTML не может анализировать SVG или другой не-HTML-контент, и даже если бы он не мог сказать, что должен был находиться в пространстве имен SVG.

innerHTML ] недоступно в SVGElement - это свойство только HTMLElement. В настоящее время нет свойства innerSVG или другого способа (*) для анализа содержимого в SVGElement. По этой причине вам следует использовать методы типа DOM. jQuery не дает вам легкий доступ к методам, поддерживающим имена, необходимые для создания элементов SVG. Действительно, jQuery не предназначен для использования с SVG вообще, и многие операции могут завершиться неудачно.

HTML5 обещает позволить вам использовать без xmlns внутри обычного HTML (text/html) документа в будущее. Но это всего лишь взлом для анализатора (**), содержимое SVG по-прежнему будет SVGElements в пространстве имен SVG, а не HTMLElements, поэтому вы не сможете использовать innerHTML, даже если они выглядят как часть HTML-документа.

Однако для современных браузеров вы должны использовать HTML-код X (должным образом исполненный как application/xhtml+xml; сохранить с расширением .xhtml для локального тестирования ), чтобы заставить SVG работать вообще. (В любом случае это имеет смысл: SVG - это стандарт, основанный на стандартах XML). Это означает, что вам придется избегать символов < внутри вашего блока сценариев (или заключить в раздел CDATA) и включить XHTML xmlns. Пример:




    
    

*: ну, есть DOM Level 3 LS parseWithContext , но поддержка браузера очень плохая. Изменить для добавления: однако, пока вы не можете вводить разметку в SVGElement, вы можете добавить новый SVGElement в HTMLElement с помощью innerHTML, а затем перенести его на желаемую цель. Скорее всего, это будет немного медленнее:


**: Я ненавижу то, как авторы HTML5, похоже, боятся XML и намерены использовать функции, основанные на XML, в жестоком беспорядке, который это HTML. XHTML решил эти проблемы много лет назад.

146
задан nbro 22 February 2016 в 20:15
поделиться

6 ответов

Мод просто означает, что вы берете остаток после выполнение деления. Поскольку 4 переходит в 2 нулевых раза, вы получаете остаток 2.

149
ответ дан 23 November 2019 в 22:34
поделиться

Чтобы представить себе это визуально, изобразите циферблат, который в вашем конкретном примере переходит только к 4 вместо 12. Если вы начнете с 4 на часах (что похоже на начиная с нуля) и двигаясь вокруг него по часовой стрелке в течение 2 «часов», вы приземляетесь на 2, точно так же, как если бы обход по часовой стрелке в течение 6 «часов» также приземлился бы на 2 (6 mod 4 == 2, как 2 mod 4 = = 2).

0
ответ дан 23 November 2019 в 22:34
поделиться

mod означает развертку при делении на. Таким образом, 2, разделенное на 4, дает 0, а осталось 2. Следовательно, 2 по модулю 4 равно 2.

4
ответ дан 23 November 2019 в 22:34
поделиться

2/4 = 0 с остатком 2

8
ответ дан 23 November 2019 в 22:34
поделиться

Modulo (mod,%) - оператор остатка.

2%2 = 0 (2/2 = 1 remainder 0)
1%2 = 1 (1/2 = 0 remainder 1)
4%2 = 0 (4/2 = 2 remainder 0)
5%2 = 1 (5/2 = 2 remainder 1)
18
ответ дан 23 November 2019 в 22:34
поделиться

Modulo - это остаток, а не деление.

2 / 4 = 0R2
2 % 4 = 2

Знак % часто используется для оператора по модулю вместо слова mod .

Для x% 4 вы получите следующую таблицу (для 1-10)

 x x%4
------
 1  1
 2  2
 3  3
 4  0
 5  1
 6  2
 7  3
 8  0
 9  1
10  2
95
ответ дан 23 November 2019 в 22:34
поделиться
Другие вопросы по тегам:

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