Как отметил @FelixKling, наиболее вероятным сценарием является то, что узлы, которые вы ищете, еще не существуют.
Однако современные методы разработки часто могут манипулировать элементами документа за пределами дерева документов либо с DocumentFragments, либо просто отсоединением / повторным подключением текущих элементов напрямую. Такие методы могут использоваться как часть шаблонов JavaScript или для предотвращения чрезмерных операций перерисовки / переплавки, в то время как элементы, о которых идет речь, сильно изменяются.
Аналогично, новая функциональность «Теневой DOM» развертывается в современных браузерах позволяет элементам быть частью документа, но не обрабатываться запросом document.getElementById и всеми его методами sibling (querySelector и т. д.). Это делается для инкапсуляции функциональных возможностей и, в частности, скрыть его.
Опять же, скорее всего, элемент, который вы ищете, просто (пока) в документе, и вы должны сделать, как предлагает Феликс , Тем не менее, вы также должны знать, что это все чаще является не единственной причиной того, что элемент может быть необоснованным (временно или постоянно).
Документация этого метода противоречива:
expression
указывает, что она может быть null
для статических членов ArgumentNullException
заявляет, что он вызывается, если expression
является null
Факт: этот метод не может использоваться для доступа к статическим членам, документация к expression
неверен. Даже когда предоставляется выражение с правильным Type
, этот метод работает не так, как ожидалось, потому что он только когда-либо ищет члены экземпляра.
Чтобы получить доступ к статическому полю или свойству, используйте Expression.MakeMemberAccess
.