2012-04-12 8 views
0

Dewey Decimal Classification(DDC)は、本とテキストを分類するのに本当に便利な方法です。だから私はそれを実装するトリプルドロップダウンメニューを見つけることを試みている。私はさまざまな方法でそれをgoogledしかし、何も見つけることができませんでした。Dewey Decimal分類によるトリプルドロップダウンメニュー

私はずっと前にdouble drop down menuを見てきましたが、最近はtriple drop down menuです。だから私はこれを自分で実装することができました。私のラッキーな推測は、JavaScriptをあまり気にしていないので、それを実装するのに本当に数時間を費やすことができると思っていました。

したがって、私の質問です。 DDCを実装するドロップダウンメニューのJavaScriptコードはどこにありますか?また、他のフィールドが必要な送信ページのため、すべてのフィールドを選択すると別のページにリダイレクトする必要はありません。これはハックされた思考かもしれない。

DDCの代わりにUniversal Decimal Classificationというコードを投稿した場合、そのコードも有効です。それは私がDDCを好むだけです。

どこにも見つからない場合は、自分でやってコードを公開しようとします。

それは、このように動作するはずです:

  • コンピュータサイエンス、情報および一般的な作品
  • 哲学と心理学
  • 宗教
  • 社会科学
  • :最初のドロップダウンには、これらのオプションを持っています言語
  • 科学(数学を含む)
  • 技術と
  • 芸術と娯楽
  • 文学
  • 歴史と地理

あなたが選択した場合は、メニュー2番目のドロップダウンは、これらの値を取得します、「サイエンス」、のは言わせ、科学適用:

  • 科学
  • 数学
  • 人の天文学&連合科学
  • 物理
  • 化学&連合科学
  • 地球科学
  • 古生物学。古動物学
  • ライフサイエンス
  • 植物
  • 動物学/動物

そして今度は、あなたが「物理学」を選びましたことを言わせて、その後、3番目のドロップダウンメニューは次のようになります:

  • 古典力学;固体力学
  • 流体力学;液体力学
  • ガス力学
  • サウンド&関連振動
  • ライト& paraphotic現象
  • 電気&エレクトロニクス
  • 磁性の
  • 現代物理学

の場合"Heat"を選択した場合、ドロップダウンメニューの値はopt1 = 5、opt2 = 3、opt3 = 6、 "Heat"は536に対応します。

完全構造はWikipediaです。

+1

、なぜそれを自分でやろう、そしてあなたが立ち往生したときに聞いていませんか?また、この「トリプルドロップダウン」はどのように機能しますか? –

+0

私は現在、PHPとMySQLの学習に焦点を当てているので、JavaScriptには興味がありませんが、私はそれを継続する必要があります。主な質問にどのように作用するのか説明しました。 –

+0

「どのように動作するのか」という私の質問は、それぞれのドロップダウンに何があるべきかを理解していないという事実に関連しています。最初のドロップダウンから何かを選択したことに応答して、最初に何が選択され、何が2番目に表示されるべきか。そして、同様に、2番目に選択をした後、3番目に表示されるべきものは..? –

答えて

0

javascriptの「高度な」コードは他のプログラミング言語と実際に似ていたので、予想よりも時間がかかりませんでした。手動で反復的な作業をしないbashスクリプトの助けを借りて約20時間。私は実際にここにjavascriptの約3000行を貼り付けることをお勧めしないと思うので、私が最初に要求したように、私はここにhtmlを投稿し、またTHIS LINKをddc.jsに投稿します。また、それをテストすることができますhereとその説明を参照してください。両方のリンクは私のページからのものであり、関連性の低いものとしてポストしないような軽いPHPがあります(NOTEの2番目のリンクで説明されています)。

HTML:

<script language="JAVASCRIPT" src="ddc.js" type="text/javascript"></script> 
<h1>Dewey Decimal Classification</h1><br><br> 
    <form style="text-align: center;" onLoad="msDDC()" name="formDDC" method="POST"> 
     <select name="classesDDC" style="width: 300px; height: 24px; font-size: 14px;" onChange="changeDivisions()"> 
     <option value="">Select a class</option> 
     <option value="0">0. Computer science, knowledge & systems</option> 
     <option value="1">1. Philosophy and psychology</option> 
     <option value="2">2. Religion</option> 
     <option value="3">3. Social sciences</option> 
     <option value="4">4. Language</option> 
     <option value="5">5. Science</option> 
     <option value="6">6. Technology</option> 
     <option value="7">7. Arts</option> 
     <option value="8">8. Literature</option> 
     <option value="9">9. History, geography & biography</option> 
    </select><br><br> 
    <select name="divisionsDDC" style="width: 300px; height: 24px; font-size: 14px;" onChange="changeSections()"> 
     <option value="">Divisions will appear here</option> 
    </select><br><br> 
    <select name="sectionsDDC" style="width: 300px; height: 24px; font-size: 14px;"> 
     <option value="">Sections will appear here</option> 
    </select><br><br> 
    <input type="submit" value="Go!" style="width: 300px; height: 24px; font-size: 14px;"> 
    </form> 
0

検索を実行したところ、同じ質問がある人がいるthis pageが見つかりました。ユーザーがessentialという名前のユーザーから応答があります。彼は明らかなアプローチ、AJAXを取っているようで、元の質問者はそれがトリックだと思ったようでした。あなたのページにAJAXを使用して好む場合


これを達成することができます。

応答は次のようになります。基本的な情報を得るために、簡単なデモをご紹介します。

この例では、スクリプト全体を保持するmain.htmlと、別のオプションを保持するrequest.htmlがあり、要求に応じてmain.htmlに注入されます。

はここmain.htmlとのコードです:

<?xml version="1.0" encoding="utf-8"?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 
<head> 
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" /> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<meta http-equiv="Content-Style-Type" content="text/css" /> 
<meta http-equiv="Content-Script-Type" content="text/javascript" /> 
<title>JavaScript Demo</title> 
<script type="text/javascript"> 
// <![CDATA[ 
/* No editing required - 
    For demonstrational purposes only. */ 


// Declaring variables 
var ajax, update, xmlData, getOptions; 
var obj, select, option; 

// This is a simple prototype that will skip the long declaration of (element.getElementsByTagName(tagName)[reference]). 
// And now can be defined as element.obj(tagName, reference) 
obj = Object.prototype.obj = function(tn, ref) { 
    if ((tn) && (typeof ref === "number") && (ref !== null)) { 
    return (this.getElementsByTagName(tn)[ ref ]); 
    } else { 
    return ( this.getElementsByTagName(tn)); 
    } 
}; 

// This is the function reference which is the one who handle's and process the request sent by the XMLHttpRequest object. 

// And considered as the most important part of the whole program. 
getOptions = function() { 
select = xmlData.responseXML.obj("select", 0) 
option = select.obj("option"); 
oLen = option.length; 
    for (x = 0; x < oLen; x++) { document.obj("select")["lists"].remove(x); 
document.obj("select")["lists"].add(new Option(option[x].childNodes[0].nodeValue, option[x].getAttribute("value")), x); 
    } 
}; 

ajax = function (url) { 
xmlData = null; 
    if (window.XMLHttpRequest) { 
    xmlData = new XMLHttpRequest(); 
    } else if (window.ActiveXObject) { 
     try { 
     xmlData = new ActiveXObject("Microsoft.XMLHTTP"); 
     } catch(e) { 
      xmlData = new ActiveXObject("Msxml2.XMLHTTP"); 
     } 
    } 
    if (xmlData !== null) { 
    xmlData.onreadystatechange = getOptions; 
    xmlData.open("GET", url, true); 
    xmlData.send(null); 
    } else { 
    alert("\nYour browser does not support AJAX Request!"); 
    } 
}; 

update = function(sel) { 
sel = (document.getElementById) ? document.getElementById(sel) : document.all.sel; 

index = sel.selectedIndex; 

ajax(sel.options[index].value); 
return; 
} 
// ]]> 
</script> 
</head> 
<body> 
<div id="content"> 
<form id="ajaxForm" action="#" onsubmit="return false;"> 
<div> 
<select id="lists" name="lists" size="1" onchange="update(this.id);"> 
<option value="">Default List</option> 
<option value="">Default List</option> 
<option value="">Defaut List</option> 
<option value="request.html">AJAX Demo - Request Lists!</option> 
</select> 
</div> 
</form> 
</div> 
</body> 
</html> 

そして、これは非AJAXyのアプローチがちょうど同じページ上のすべてを読み込むことであろうtherequest.html

<?xml version="1.0" encoding="utf-8"?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 
    <head> 
    <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" /> 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
    <title>Request Page</title> 
    </head> 
    <body> 
    <div id="content"> 
     <form id="frm" action="*" onsubmit="return false;"> 
     <div> 
      <select id="sel" name="sel" size="1" onchange="ajax.listed(this.id);"> 
      <option value="">Requested List</option> 
      <option value="">Requested List</option> 
      <option value="">Requested List</option> 
      <option value="main.html">AJAX Demo - Default Page!</option> 
      </select> 
     </div> 
     </form> 
    </div> 
    </body> 
</html> 
+0

これらは「ダブルドロップダウンメニュー」または「トリプルドロップダウンメニュー」と呼ばれていて、すでにそれらを認識していました。実際に、私が質問に入れた[このリンク](http://www.trans4mind.com/personal_development/JavaScript/Doublemenu.htm)にチェックを入れておけば、その種類のスクリプトが私がそこに投稿したものJavaScriptの思考で)。実際にDDCが実装されているためのリソースについては、実際に作成する方法ではなく、私が実際に求めていました。とにかく助けてくれてありがとう。 –

1

のために行きます。メニューにはAJAXは必要ありません。非常にシンプルなJavaScriptです。ページははるかに大きくなりますが、私は思っていませんので、関連するコードを別の.jsファイルに入れて、クライアント側にキャッシュすることができ、一度しかダウンロードする必要はありません。