это почти сработало (не так элегантно, как рекурсивная функция)
http://jsfiddle.net/mplungjan/3zhwv/
Отсутствует 128 с пульта / id, но все остальное работает. Я хотел бы выяснить, что нужно сделать, чтобы получить 128 от узла, который короче, чем 4
Я согласен, что она не гибкая, как рекурсивная функция, но я хотел посмотреть, смогу ли я сначала создать "грубую силу", а затем сравнить ее с чем-то более умным.
<code><span id="local->ethernet->port3->rx_flow">q4234</span>
<span id="local->ethernet->port3->rx">q345</span>
<span id="local->ethernet->port1->rx_flow">128</span>
<span id="remote->id">128</span>
<hr/>
<pre>
myObject = {
"local":{
"ethernet":{
"port3": {
"rx_flow":"q4234",
"rx":"q345"
}
"port1": {
"rx_flow":"128"
}
}
},
"remote":{
"id":"128"
}
}
var spans = document.getElementsByTagName ("span");
var myObject = {};
for (var i = 0; i ');
var val = spans [i] .innerHTML
if (parts [0]) {// Локальный или удаленный
if (myObject [parts [0]] == null) myObject [parts [0]] = {};
if (parts [1]) {// ethernet или id
if (myObject [parts [0]] [parts [1]] == null) myObject [parts [0]] [parts [1]] = (parts.length == 1)? val: {};
if (parts [2]) {// порт3 или порт1
if (myObject [parts [0]] [parts [1]] [parts [2]] == null) myObject [parts [0]] [parts [1]] [parts [2]] = (parts.length = ? = 2) вал: {};
if (parts [3]) {// rx_flow или rx
MyObject [деталь [0]] [части [1]] [части [2]] [деталь [3]] = Val;
}
}
}
}
}
for (var o в myObject) {// локальный или удаленный
document.write (о + '/');
for (var p в myObject [o]) {// ethernet или id
document.write (р + '/');
for (var q в myObject [o] [p]) {// порты
document.write (д + ': /');
for (var r в myObject [o] [p] [q]) {// rx_flow или rx
document.write (r + '-' + myObject [o] [p] [q] [r] + '
');
}
}
}
}