2016-06-21 8 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あなたはこの' var self = this; 'を実現するのはナンセンスですか?あなたは '}'を閉じた後でも参照し続けます。私はこの点を理解していない。ブラウザでは 'self'が' window'オブジェクトですが、あなたのコードで意図したものなのかどうかはわかりません。 – Azamantes

答えて

-1

のようなオブジェクトにあなたのリンクを追加します。

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

今あなたがそのリンクに行くために必要がある場合、この機能を使用してください:

あなたはこのような何かを行うことができ、HTMLで
+0

どのように関数を呼び出すのですか? – will

+0

Window.openは関数です。それを入力してください! – shash7

3

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

あなたは異なる要素がテキストや画像のようonclick使用することができ、ボタンを使用する必要はありません。これはjs関数を呼び出すこともできます。関数名は "window.open ..."のところに置いてください。もちろん

それを行うための標準的な方法は、あなたがここにJSを使用して練習することができ

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

です:http://www.w3schools.com/js/tryit.asp?filename=tryjs_intro_inner_html を、ここでそれについての詳細を学ぶ:http://www.w3schools.com/js/js_intro.asp

私はあなたが私たちを示すだろう、なぜわかりませんJSONは別のページへのリンクを開きます。私が誤解しない限り。この種の基本的な情報は、簡単なGoogle検索で見つけることができます。

関連する問題