2016-06-21 123 views
-3

我使用以下Javascript来制作一种用户通过一组问题点击的流程图。对于某些回复,我想链接到可以找到更多信息的外部网站。我如何添加这些链接?如何在javascript中添加链接

HTML 
<!DOCTYPE html> 
<html lang="en"> 
    <head> 
    </head> 
    <body> 

    <div class="wrapper"> 
     <div class="container"> 
     <div class="row"> 
      <div class="col-xs-12 text-right"> 
      <button class="btn btn-default btn-corner" type="submit" data-bind="click: startOver, visible: queryData().id > 0">Start over</button> 
      </div> 
     </div> 
     </div> 

     <div class="container main"> 
     <div class="row"> 
      <div class="c12 text-center"> 
      <h1 data-bind="text: queryData().text"></h1> 
      <h3 data-bind="text: queryData().subhead"></h3> 
      <div class="option-group" data-bind="foreach: queryData().answers"> 
       <button class="btn btn-default btn-lg" type="submit" data-bind="click: $parent.goToTarget, text: text"></button> 
      </div> 
      <button class="btn btn-default" type="submit" data-bind="click: stepBack, visible: navHistory().length > 1">Previous Step</button> 
      </div> 
     </div> 
     </div> 
     <div class="push"></div> 
    </div> 


    <script src="http://ajax.aspnetcdn.com/ajax/knockout/knockout-3.3.0.js"></script> 
    <script src="app.js?v=0.4.0"></script> 

    <script> 
    </script> 
    </body> 
</html> 

的JavaScript如下:

JS

var queries = [{ 
id: 0, 
text: "Where to start?", 
answers: [{ 
text: "Let's Begin!", 
target: 1 
}] 
}, { 
id: 1, 
text: "Which genre do you want to start in?", 
    answers: [{ 
    text: "Fantasy", 
    target: 100 
    }, { 
     text: "SciFi", 
     target: 2 
    }, { 
     text: "Neither", 
     target: 59 
    }] 
    }, { 
    id: 2, 
    text: "It's huge but it's worth it. The Cryptonomicon by Neal Stephenson", 
    answers: [{ 
    text: "Amazon.co.uk", 
    target: "_blank" 
    }, { 
    text: "Amazon.com" 
    }] 
}]; 




function QueryViewModel() { 
    var self = this; 

    self.querySet = ko.observable(); 
    self.currentStep = ko.observable(); 
    self.queryData = ko.observable(); 
    self.sfw = ko.observable(); 
    self.navHistory = ko.observableArray(); 

    // Operations 
    self.goToTarget = function(obj) { 
    self.navHistory.push(self.currentStep()); 
    self.currentStep(obj.target); 
    self.queryData(self.querySet()[obj.target]); 
} 

    self.startOver = function() { 
    self.navHistory.removeAll(); 
    self.goToTarget({target: 0}); 
    } 

    self.stepBack = function() { 
    var lastStep = self.navHistory().length > 1 ? self.navHistory.pop() : 0; 
    self.currentStep(lastStep); 
    self.queryData(self.querySet()[lastStep]); 
    } 

    var paramsString = document.location.hash.substring(1); 
    var params = new Array(); 
    if (paramsString) { 
    var paramValues = paramsString.split("&"); 
    for (var i = 0; i < paramValues.length; i++) { 
    var paramValue = paramValues[i].split("="); 
    params[paramValue[0]] = paramValue[1]; 
} 
    } 

    params ? paramTarget = params['target'] : params = []; 


    self.sfw() ? self.querySet(queriesSFW) : self.querySet(queries); 
    if (paramTarget) { 
    self.navHistory.push(0); 
    self.currentStep(0); 
    self.goToTarget({target: paramTarget}) 
    } else { 
    self.goToTarget({target: 0}); 
    } 
} 

ko.applyBindings(new QueryViewModel()); 
+3

这只是json数据部分。请使用您正在使用的html和js更新问题。 –

+3

@AndrewL。这不是'json',它是一个对象字面值:P –

+0

@william clarke you * do *意识到这个'var self = this;'是无稽之谈?您在关闭括号'}后继续引用它。我不明白这一点。在浏览器中,'self'是'window'对象,但我不确定这是否是您想要的代码。 – Azamantes

回答

-1

添加你的链接像对象:

text: "Fantasy", 
link: "http://www.stackoverflow.com", 
target: 2 

现在,当你需要去链接,使用此功能:

var link = obj.link; 
window.open(link, "_blank"); 
+0

如何调用该功能? – will

+0

Window.open是函数。输入! – shash7

3

在HTML中,你可以做这样的事情:

<button type="button" onclick="window.open('https://google.com/', '_self')">Button</button> 

你不必使用一个按钮,不同的元素可以使用onclick像文本或图像。这也可以调用js函数,只需将函数名称放在“window.open ...”的位置。

课程标准的方式来做到这一点是

<a href='https://www.google.com/'>Link</a> 

你可以在这里使用JS做法:http://www.w3schools.com/js/tryit.asp?filename=tryjs_intro_inner_html 这里更多地了解它:http://www.w3schools.com/js/js_intro.asp

我不知道你为什么会告诉我们用于打开指向另一个页面的链接的JSON。除非我误解。这种基本信息可以通过快速的Google搜索找到。