Javascript 附加<;ul>;及<;李>;在递归循环中
我有一个网站集。我被告知需要一个递归循环来完成这项工作 这就是我尝试过的: 加载站点时,调用getSiteTree(),它将顶级网站传递给my getSubSite()函数。从那里我检查是否有任何子网站。我有一个布尔值,但我还没有真正把它用在任何事情上,我以前见过它被用于这种类型的工作。无论如何,从那里我检查是否有子站点,如果没有,我记录分支的末尾,如果有,我使用新的url再次调用函数并重复该过程。看看我的控制台,它似乎按预期工作Javascript 附加<;ul>;及<;李>;在递归循环中,javascript,jquery,html,sharepoint,recursion,Javascript,Jquery,Html,Sharepoint,Recursion,我有一个网站集。我被告知需要一个递归循环来完成这项工作 这就是我尝试过的: 加载站点时,调用getSiteTree(),它将顶级网站传递给my getSubSite()函数。从那里我检查是否有任何子网站。我有一个布尔值,但我还没有真正把它用在任何事情上,我以前见过它被用于这种类型的工作。无论如何,从那里我检查是否有子站点,如果没有,我记录分支的末尾,如果有,我使用新的url再次调用函数并重复该过程。看看我的控制台,它似乎按预期工作 function getSiteTree(){ var tr
function getSiteTree(){
var tree = $('#treeviewList');
var rootsite = window.location.protocol + "//" + window.location.hostname;
var siteEnd = false;
getSubSite(rootsite);
}
function getSubSite(url){
$().SPServices({
operation: "GetWebCollection",
webURL: url,
async: true,
completefunc: function(xData, Status) {
var siteUrl;
var siteCount = $(xData.responseXML).find("Web").length;
if(siteCount == 0){
console.log("end of branch");
siteEnd = true;
}else{
$(xData.responseXML).find("Web").each(function() {
siteUrl = $(this).attr("Url");
console.log(siteUrl);
getSubSite(siteUrl);
});
}
}
});
}
我的问题:现在我有了我的网站,我需要利用这些网站创建类似的东西,但我不确定如何实现这一点
<li>Site 1
<ul>
<li>sub 1.1</li>
<li>sub 1.2</li>
<li>sub 1.3</li>
<ul>
<li>1.3.1</li>
</ul>
<li>sub 1.4</li>
<li>sub 1.5</li>
</ul>
</li>
<li>Site 2
<ul>
<li>sub 2.1</li>
<li>sub 2.2</li>
<li>sub 2.3</li>
<ul>
<li>2.3.1</li>
<li>2.3.2</li>
</ul>
</ul>
</li>
</ul>
站点1
- 第1.1分节
- 第1.2分段
- 第1.3分段
- 1.3.1
- 第1.4分段
- 分1.5
站点2
- 次级2.1
- 次级2.2
- 次级2.3
- 2.3.1
- 2.3.2
我有一个初始html:
<div id="treeviewDiv" style="width:200px;height:150px;overflow:scroll">
<ui id="treeviewList"></ui>
</div>
这是我能得到的输出和我正在努力实现的目标。希望这能让事情澄清一点:
假设您有一个嵌套对象,您可能希望执行以下操作:
function buildTree($element, $object) {
var $ul = $('<ul></ul>');
var $li;
$object.forEach(function (item) {
$li = $('<li>' + item.Name + '</li>');
$ul.append($li);
if (item.SubCategories.length > 0) {
buildTree($ul, item.SubCategories);
}
$element.append($ul);
});
}
函数构建树($element,$object){
var$ul=$(“
”);
var$li;
$object.forEach(函数(项){
$li=$(“”+item.Name+” );
$ul.附加($li);
如果(item.SubCategories.length>0){
构建树($ul,项目子类别);
}
$element.append($ul);
});
}
这是一把小提琴:
对于SharePoint,您将发送网站集的根网站,而不是子类别,您将发送item.webs属性。当然,所有这些都是使用javascript或jquery对象实现的。您可以通过其他方式执行此操作,但如果您希望递归它,则有一个包含同一“类”的其他对象的对象会有所帮助。如果您有一个嵌套对象,您可能需要执行以下操作:
function buildTree($element, $object) {
var $ul = $('<ul></ul>');
var $li;
$object.forEach(function (item) {
$li = $('<li>' + item.Name + '</li>');
$ul.append($li);
if (item.SubCategories.length > 0) {
buildTree($ul, item.SubCategories);
}
$element.append($ul);
});
}
函数构建树($element,$object){
var$ul=$(“
”);
var$li;
$object.forEach(函数(项){
$li=$(“”+item.Name+” );
$ul.附加($li);
如果(item.SubCategories.length>0){
构建树($ul,项目子类别);
}
$element.append($ul);
});
}
这是一把小提琴:
对于SharePoint,您将发送网站集的根网站,而不是子类别,您将发送item.webs属性。当然,所有这些都是使用javascript或jquery对象实现的。您可以用其他方法来实现,但是如果您想递归它,那么有一个包含相同“类”的其他对象的对象会有所帮助。您考虑过使用XSLT吗?这里有很多未定义的术语(子站点?)如果您向我们展示需要解析的返回内容,我可以告诉您如何执行此操作。您是否可以将其作为json对象返回?FTW,您可能需要考虑使用anguljs或KokOutt,它可以将JSON数据绑定到这样的结构。我不熟悉XSLT。我计划将
- 和
- 标签从一个位置变成我整个站点的可扩展/可折叠导航。这就是为什么我要使用HTML和JS查看SPServices文档,您可以使用XSLT检索JSON吗?这里有很多未定义的术语(子网站?),如果您向我们展示需要解析的返回内容,我可以告诉您如何执行此操作。您是否可以将其作为JSON对象返回?FTW,您可能需要考虑使用anguljs或KokOutt,它可以将JSON数据绑定到这样的结构。我不熟悉XSLT。我计划将
- 和
- 标签从一个位置变成我整个站点的可扩展/可折叠导航。这就是为什么我要使用HTML和JS查看SPServices文档,您可以通过我查看您的示例来检索JSON,但我没有类似于$input变量的内容。使用SharePoint,您可以获得网站集(SPSite类),使用RootWeb属性,它是一个web。Web有一个Webs属性,该属性获取子Web。将RootWeb作为初始变量发送,然后将.Webs属性作为递归调用发送。我正在查看您的示例,但我没有类似于$input变量的任何内容。使用SharePoint可以获取网站集(SPSite类),使用RootWeb属性,它是一个web。Web有一个Webs属性,该属性获取子Web。将RootWeb作为初始变量发送,然后将.Webs属性作为递归调用发送。