2011-06-06 23 views
0

我有一個網頁表單,用戶通過下拉菜單回答問題,我希望根據他們的回答提出其他問題。任何方式爲數據流生成JavaScript或僞代碼?

例如如果你的企業有一個場所,然後問開放時間。如果他們不顯示他們所在的區域。

隨着每個問題的增加,代碼變得越複雜。許多if/then函數並不總是有互斥的答案。

雖然每個用戶可能只需回答5-10個問題,但可能的問題的數量可以是100+

有沒有產生任何的JavaScript/PHP或至少是僞代碼,它可以讓您完成所有可用的答案繪製路徑的簡單方法及其產生的相關嵌套的if/then你發言?

例子:Akinator猜測基於以前的答案電視劇中的人物。

在預期某些迴應,當然頁面不編碼,以便所有問題都在一個頁面上回答,但我想知道它是否至少有可能。

在此先感謝。我希望你們都喜歡WWDC;)

+0

'有沒有一種簡單的方法來生成Javascript/PHP或至少僞代碼'我會告訴你,這可能會被過度簡單化,但你最好的選擇是 - >一支鉛筆和幾張白紙。寫下應用程序應該做什麼,然後再擔心它將如何執行此操作。 (實施)。 – stefgosselin 2011-06-06 17:19:32

回答

1

您可以設置一個包含所有的規則,每個元素在頁面上一個JSON對象必須對應於JSON對象的ID /屬性。然後在更改時檢查json對象是否有與「change」元素的屬性對應的「trigger」節點,然後根據該值查找應該隱藏/顯示的所有元素。注意這段代碼真的很粗糙,並不是一個確切的答案,但足以讓你開始。

<select id='q1' onchange='handleHideShow(this)'></select> 
<select id='q2' onchange='handleHideShow(this)'></select> 

function handleHideShow(el) 
{ 
    var elValue = el.value; 
    if(hsObj[el.id]) 
    { 
     var rules = hsObj[el.id].rules; 
     for(var r = 0; r < rules.length; r++) 
     { 
      var rRule = rules[r]; 
      for(var t in rRule) 
      { 
       var showEl = document.getElementById(rRule[t]); 
       if(showEl) 
       { 
        var hideVal = ""; 
        if(elValue != t) 
        { 
         hideVal = 'none'; 
        } 
        showEl.styles.display = hideVal; 
       } 
      } 
     } 
    }    
} 
var hsObj = [ 
    "q1":{"Yes":"q2"} 
]; 
+0

讚賞,謝謝。 – 2011-06-07 07:23:35

0

而不是在產生很多代碼方面思考,我認爲在方面避免很多代碼。

如果你有所有可能的問題清單,你知道哪些是「開始」的問題,那麼你需要知道他們每個人是什麼:

  • 問題(文本)
  • 問題的「名稱」換句話說,當你積累了一些關鍵的記賬回答
  • 可能的答案(「是」 /「否」或選項列表)
  • 每個可能的答案,接下來的問題的身份問

因此,您只需要知道如何提出問題並對答案採取行動的一段代碼。它應該將答案累積在列表中,因爲它可以從用戶那裏獲得答案。您甚至可以提供導航方案以允許用戶倒退。

相關問題