В цикле, прокомментированном как «перебирать непосредственные дочерние элементы этой папки», вы, вероятно, правильно зацикливаетесь на каждой из закладок, но ничего не делаете с каждым узлом, прежде чем перейти к следующему.В результате переменная node
устанавливается на последний узел при выходе из цикла.
Кроме того, вы присваиваете textbox.value, а не добавление к нему, так что даже если бы вы действовали на данные для каждого узла, вы бы каждый раз сжимали его, в результате чего только данные последнего узла (тот же результат!).Если вы хотите создать подобную строку, вы должны добавить к ней, а не присваивать ей.Один из способов сделать это - использовать оператор +=
.
Итак, последняя часть кода должна выглядеть примерно так:
var textbox = document.getElementById("MyExtension");
// iterate over the immediate children of this folder
for (var i = 0; i < rootNode.childCount; i ++) {
var node = rootNode.getChild(i);
var title = "Title: " + node.title; // gets the title of URL
var url = "\nURL: " + node.uri; // gets the URL
textbox.value += title + ": " + url + "\n"; // note the += (append) operator
}
// close a container after using it!
rootNode.containerOpen = false;
Примечание: во многих других (более строгих) языкахваш опубликованный код не будет компилироваться, потому что вы используете переменную node
за пределами "контекста" (фигурных скобок), в котором он был объявлен.Это хорошее эмпирическое правило: следовать этому принципу добровольно: нарушение этого правила часто означает, что вы совершаете ошибку или вам необходимо более тщательно продумывать, что вы делаете.В этом случае он мог предупредить вас о проблеме.