第一次問一個問題在這裏,所以我希望我所有的信息,但隨時要求澄清,如果我失去了一些東西。跳過步驟()
我試圖創建一個使用bootstrap tour庫通過頁遊。我可以開始,大部分時候它運行得相當順利,除非當我試着去檢查一個變量並根據需要跳過某些步驟。
我不能複製我的整個代碼庫在我真正的項目,所以我試圖讓與我能想出的相關部分一jsfiddle。我承認我以前從未使用過jsfiddle,但它不起作用,我認爲我可能沒有得到正確加載的導覽文件。我已鏈接到獨立文件,以便它們包含運行所需的相關bootstrap位。我承認我是一個完全的jsfiddle newb,所以我不知道爲什麼這些文件似乎沒有被正確加載和觸發,但這是一個完全不同的錯誤。總之,這裏是我的基本代碼:
HTML:
<body>
<button id="start" class="btn btn-default">Start the tour</button>
<div id="box1" class="box">Element 1</div>
<div id="box2" class="box">Element 2</div>
<div id="box3" class="box">Element 3</div>
<div id="box4" class="box">Element 4</div>
<div id="box5" class="box">Element 5</div>
</body>
JS:
var foo = true;
var tour = new Tour({
storage: false,
debug: true,
steps: [
{
orphan: true,
animation: true,
backdrop: true,
title: "index 0/Step 1",
content: "schtuff"
}, {
animation: true,
element: "#box1",
placement: right,
title: "index 1/Step 2",
content: "click this box to continue, should skip to Index 5/Step 6",
template: "<div class='popover tour'>"+
"<div class='arrow'></div>"+
"<h3 class='popover-title'></h3>"+
"<div class='popover-content'></div>"+
"<div class='popover-navigation'>"+
"</div>"+
"</div>",
onNext: function(tour){
if (foo == true){
alert("skip to 5");
tour.goTo(5);
} else {
tour.next();
};
}
}, {
orphan: true,
animation: true,
backdrop: true,
title: "index 2/Step 3",
content: "moar schtuff"
}, {
element: "#box2",
placement: right,
title: "Index 3/Step 4",
content: "schtuff"
}, {
element: "#box3",
placement: right,
title: "Index 4/Step 5",
content: "schtuff"
}, {
element: "#box4",
placement: right,
title: "Index 5/Step 6",
content: "schtuff"
}
]
});
$("#start").on("click", function(){
tour.start(true);
};
//initialize the tour
tour.init();
我已經通過在這裏像this one問題讀取和它的親密,但我的問題未來的跨越是因爲有一個,如果在onNext功能/其他檢查,當我跑步時在控制檯調試器在Chrome會檢查該變量爲真,將跳過進取,顯示正確的提示,但會即使它不能,也會發出常規的「下一個」功能 可見。我只能在調試器工具中看到它在控制檯中顯示。當在正確的進一步提示上單擊「下一步」時,而不是沿着通過剩餘提示的陣列繼續進行,這就好像「下一步」在原始工具提示上被擊中一樣。 (這是令人困惑的描述對不起)。
因此,如果旅遊(0) - >遊(1) - >(檢查是否富= TRUE) - >遊(5) - >(而不是去遊覽(6)它會回來(3)因爲它認爲旅遊(5)實際上是旅遊(2)
也許我只是從根本上不理解如何tour.goTo()函數應該工作,但我只是運行出出主意。我曾嘗試是停止錄製if語句這樣
if (foo == true){
tour.end();
tour.start(true);
tour.goTo(5);
} else {
tour.next();
}
這全中,控制檯說,showStep無法顯示,因爲巡演已經結束的錯誤。奇怪的是,在另一部分我的頁面,我不得不停止巡視和使用一個超時重啓(我不得不等待一個元素加載),並結束開始goTo工作得很好。該代碼看起來是這樣的(但不在的jsfiddle):
onNext: function(tour){
tour.end();
setTimeout(function(){
tour.start(true);
tour.goTo(4);
}, 500);
}
看來,這似乎會引起問題,通過這兩個選項之間沒有選擇if/else語句,而是通過發射都。
預先感謝您的幫助,您可以給我。對於這本小說感到遺憾,但我想確保我儘可能地提供了儘可能多的信息。
謝謝,這是超級有用!我意識到,在我開始實現該元素是一個需要點擊的按鈕,因此我必須添加一個onStart變量,以便事件處理程序僅在巡視正在進行時觸發。我在這裏更新了自己的小提琴,以表示任何未來有同樣問題的人:https://jsfiddle.net/cz96aps9/4/ – Duckful
工作就像一個魅力。謝謝。 –