Это в порядке для управления dom перед состоянием готовности?

Вы можете получить доступ к весу ребра как G [u] [v] ['weight'] или перебирая данные ребра. Таким образом, вы можете, например,

In [1]: import networkx as nx

In [2]: G=nx.DiGraph()

In [3]: G.add_edge(1,2,weight=10)

In [4]: G.add_edge(2,3,weight=20)

In [5]: G[2][3]['weight']
Out[5]: 20

In [6]: G[2][3]['weight']=200

In [7]: G[2][3]['weight']
Out[7]: 200

In [8]: G.edges(data=True)
Out[8]: [(1, 2, {'weight': 10}), (2, 3, {'weight': 200})]

In [9]: for u,v,d in G.edges(data=True):
   ...:     d['weight']+=7
   ...:     
   ...:     

In [10]: G.edges(data=True)
Out[10]: [(1, 2, {'weight': 17}), (2, 3, {'weight': 207})]
10
задан meandmycode 3 August 2009 в 16:17
поделиться

4 ответа

Можно, но есть проблемы, связанные с этим.

Во-первых, в IE, если вы пытаетесь манипулировать узлом, который не был закрыт (например, BODY перед его закрывающим тегом, который должен быть ниже вашего JS), тогда вы может возникнуть ошибка IE "OPERATION ABORTED", которая приведет к пустой странице. Манипулирование узлом включает добавление узлов, перемещение узлов и т. Д.

В других браузерах поведение не определено, однако обычно они ведут себя так, как вы ожидаете. Основная проблема заключается в том, что по мере развития вашей страницы она может загружаться / анализироваться / запускаться по-разному. Это может привести к запуску некоторого сценария до того, как браузер определит, что элементы, на которые ссылаются, были фактически созданы и доступны для манипуляций с DOM.

Если вы пытаетесь повысить производительность, воспринимаемую пользователем (т. Е. Оперативность). Я настоятельно рекомендую вам избегать этого пути и постараться осветлить свои страницы. Вы можете использовать Yahoo YSlow / Google Page Performance Firebug, чтобы помочь вам начать работу.

Google Page Speed ​​

Yahoo YSlow

5
ответ дан 4 December 2019 в 02:26
поделиться

Пока вы изменяете только узлы, которые предшествуют блоку сценария (т. Е. Закрывающий тег узла предшествует открывающему тегу сценария), у вас не должно возникнуть никаких проблем.

Если вы хотите убедитесь, что операция прошла успешно, заключите код в блок try ... catch и вызовите его снова через setTimeout () в случае ошибки.

1
ответ дан 4 December 2019 в 02:26
поделиться

На Viajeros.com у меня есть индикатор загрузки, работающий 8-9 месяцев, и пока у меня нет проблем. Это выглядит так:

<body>

<script type="text/javascript">
    try {
        document.write('<div id="cargando"><p>Cargando...<\/p><\/div>');
        document.getElementById("cargando").style.display = "block";
    } catch(E) {};
</script>
0
ответ дан 4 December 2019 в 02:26
поделиться

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

3
ответ дан 4 December 2019 в 02:26
поделиться
Другие вопросы по тегам:

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