HTML网页定义
<html>
<meta http-equiv="Content-Type" content="text/html; charset=U">


	



















	
	
	
	
	
	
	    




























	
	
	



	
ホームページ ウェブフロントエンド htmlチュートリアル ネストされた JSON データは自動的に HTML Web ページに書き戻されます_html/css_WEB-ITnose

ネストされた JSON データは自動的に HTML Web ページに書き戻されます_html/css_WEB-ITnose

Jun 24, 2016 am 11:43 AM

この記事では、MongoDB データベースから JSON ネストされた文字列を解析し、HTML インターフェイス要素のカスタム属性に従ってデータ コンテンツを表示するためのソリューションと技術的な実装コードを紹介します。

HTML Web ページの定義

注、フォーム定義ルールは次のとおりです:
(1) Label を使用してページ データをエコーし​​ます。
(2) label で、属性「fieldid」をカスタマイズします (テーブルの場合)。カスタム属性は "subid" です。 (3) テーブル

の要素に、テーブルの列数を属性値とするカスタム属性 subtable を追加します。
ページを設計する場合、複数行のサブフォームの定義は次のルールに従って設計する必要があります:

ヘッダー行が必要です。
  • データの行が事前に定義されている必要があります。
  • JavaScript コード
    <html><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><head></head><body><h1>表单展示数据回写测试 JavaScript</h1><p id="demo" >这是表单数据解析示例.</p><div> <label >名称:</label><label fieldid="name"></label><br>通过自定义属性“fieldtype”来定义数据类型。<br><br><button id="test" type="button" onclick="showAllElem()">测试展示表单数据</button><br><br><label>标题:</label><label fieldid="title"></label><br><label >年龄:</label><label fildid="old"></label><br>多行子表单,字段属性定义为“subid”,表单按数据字段属性定义,标识出含有子表,属性为“subtable”单独定义列数,其他不变。<table id="dynamictable" fieldid="subdatas" subtable="3" border="1" cellspacing="0" width="400"><tr><td>数据名称</td><td>数据类型</td><td>数值</td></tr><tr><td><label subid="fieldid"></label></td><td><label subid="fieldtype"></label></td><td><label subid="fieldvalue"></label></td></tr></table><br><label >结束标志:</label><label fieldid="flag"></label><br></div> </body></html>
    ログイン後にコピー
  • JSON データの内容と形式は以下のとおりです:

    <script>//表单增加插入一行function insertRow(){  var dytb_id = 'dynamictable';  var dy_row_num = document.getElementById(dytb_id).rows.length;  //取table中第二行单元格集合  var dy_row = document.getElementById(dytb_id).rows[1].cells;  //在table末尾,追加一行  var dytb=document.getElementById(dytb_id).insertRow(dy_row_num);  for (i = 0;i<dy_row.length; i++){    var dy_td = dytb.insertCell(i);    dy_td.innerHTML = dy_row[i].innerHTML;     } }//显示所有回写数据function showAllElem(){    var elems = document.getElementsByTagName("*");  //遍历所有元素    var ret_json = "";  //定义返回JSON数据字符串    var m = 0;          //JSON嵌套子文档起点    var subcolumns = 0;  //多行表单列数    var subrows = 0;     //多行表单数据行数    var row_num = 0;     //数据行数    ret_json = "{\"name\":\"测试JSON\",\"title\":\"测试标题\",\"subtable\":[{\"fieldid\":\"数据名称a\",\"fieldtype\":\"string\"},{\"fieldid\":\"数据名称b\",\"fieldtype\":\"number\"},{\"fieldid\":\"数据名称c\",\"fieldtype\":\"datetime\"}],\"flag\":\"测试结束!\"}";       //将 JavaScript 对象表示法 (JSON) 字符串转换为对象。    json_obj = JSON.parse(ret_json);    for(var i=0;i<elems.length;i++){        if (elems[i].hasAttribute("fieldid") && !(elems[i].hasAttribute("subtable"))){            //按键值获取对象的值            var tmp_key = elems[i].getAttribute("fieldid");            alert(tmp_key);            elems[i].innerText = json_obj[tmp_key];            //n++;        }else{            if (elems[i].hasAttribute("subtable")){                subcolumns = elems[i].getAttribute("subtable");                var tbl_id = elems[i].id;                //取表单数据行数                subrows = document.getElementById(tbl_id).rows.length - 1;                //按规则取多行子表单数据                var json_obj_dim = json_obj["subtable"];                for (var j=subrows;j<json_obj_dim.length;j++){                    insertRow();                }                m = 0;            }else{                if (elems[i].hasAttribute("subid") && (m < subcolumns)){                    var tmp_key = elems[i].getAttribute("subid");                    alert(tmp_key);                    elems[i].innerText = json_obj_dim[row_num][tmp_key];                    m++;                }else{                    if (elems[i].hasAttribute("subid")){                        //多行子表单数据换行                        row_num++;                        var tmp_key = elems[i].getAttribute("subid");                        alert(tmp_key);                        elems[i].innerText = json_obj_dim[row_num][tmp_key];                                                m = 1;                      }                }            }        }    } }</script>
    ログイン後にコピー
    システム設計上、この JSON データは MongoDB データベースから Webservice 経由で取り出した BSON データです。データ内の「キーと値」ペアの「キー」は、HTML Web ページのラベルのカスタム属性「fieldid」または「subid」に対応します。

    以下のシーケンス図は、JSON データの処理原理を簡潔に示しています。このうち、MongoDB データベースを読み取る処理と内容は省略されています。

    Raphaël 2.1.2 で作成 ブラウザ ブラウザ HTML ページ HTML ページ JS 関数 JS 関数 MongoDB MongoDB JSON オブジェクト JSON オブジェクト設計ページ、カスタム属性 () JSON データの取得 () BSON データの読み取り () HTML インターフェイス要素のトラバース () ) 解析 ( JSON 文字列) インターフェイス要素のキー値 () に従って JSON オブジェクトの値を取得します

    注: JSON は次のドキュメント モードでサポートされています: Internet Explorer 8 標準モード、Internet Explorer 9 標準モード、Internet Explorer 10 標準モード、 Internet Explorer 11 標準モード。ストア アプリ (Windows 8 および Windows Phone 8.1) でもサポートされています。

    次のドキュメント モードではサポートされていません: Quirks、Internet Explorer 6 標準モード、Internet Explorer 7 標準モード。

    参考:

    Web フォームのドキュメント設計と技術実装 Xiao Yongwei 2015.5
    JavaScript による HTML フォーム要素とフォーム定義のトラバース Xiao Yongwei 2015.5
    W3School が提供するコンテンツ: http://www.w3school.com.cn/jsref/dom_obj_document.asp
    Microsoft 提供: JSON.parse 関数 (JavaScript)

    このウェブサイトの声明
    この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

    ホットAIツール

    Undresser.AI Undress

    Undresser.AI Undress

    リアルなヌード写真を作成する AI 搭載アプリ

    AI Clothes Remover

    AI Clothes Remover

    写真から衣服を削除するオンライン AI ツール。

    Undress AI Tool

    Undress AI Tool

    脱衣画像を無料で

    Clothoff.io

    Clothoff.io

    AI衣類リムーバー

    AI Hentai Generator

    AI Hentai Generator

    AIヘンタイを無料で生成します。

    ホットツール

    メモ帳++7.3.1

    メモ帳++7.3.1

    使いやすく無料のコードエディター

    SublimeText3 中国語版

    SublimeText3 中国語版

    中国語版、とても使いやすい

    ゼンドスタジオ 13.0.1

    ゼンドスタジオ 13.0.1

    強力な PHP 統合開発環境

    ドリームウィーバー CS6

    ドリームウィーバー CS6

    ビジュアル Web 開発ツール

    SublimeText3 Mac版

    SublimeText3 Mac版

    神レベルのコード編集ソフト(SublimeText3)

    &lt; Progress&gt;の目的は何ですか 要素? &lt; Progress&gt;の目的は何ですか 要素? Mar 21, 2025 pm 12:34 PM

    この記事では、HTML&lt; Progress&gt;について説明します。要素、その目的、スタイリング、および&lt; meter&gt;との違い要素。主な焦点は、&lt; Progress&gt;を使用することです。タスクの完了と&lt; Meter&gt; statiの場合

    &lt; datalist&gt;の目的は何ですか 要素? &lt; datalist&gt;の目的は何ですか 要素? Mar 21, 2025 pm 12:33 PM

    この記事では、HTML&lt; Datalist&GT;について説明します。オートコンプリートの提案を提供し、ユーザーエクスペリエンスの改善、エラーの削減によりフォームを強化する要素。

    &lt; meter&gt;の目的は何ですか 要素? &lt; meter&gt;の目的は何ですか 要素? Mar 21, 2025 pm 12:35 PM

    この記事では、html&lt; meter&gt;について説明します。要素は、範囲内でスカラーまたは分数値を表示するために使用され、Web開発におけるその一般的なアプリケーション。それは差別化&lt; Meter&gt; &lt; Progress&gt;およびex

    ビューポートメタタグとは何ですか?レスポンシブデザインにとってなぜそれが重要なのですか? ビューポートメタタグとは何ですか?レスポンシブデザインにとってなぜそれが重要なのですか? Mar 20, 2025 pm 05:56 PM

    この記事では、モバイルデバイスのレスポンシブWebデザインに不可欠なViewportメタタグについて説明します。適切な使用により、最適なコンテンツのスケーリングとユーザーの相互作用が保証され、誤用が設計とアクセシビリティの問題につながる可能性があることを説明しています。

    HTML5&lt; time&gt;を使用するにはどうすればよいですか 日付と時刻を意味的に表す要素? HTML5&lt; time&gt;を使用するにはどうすればよいですか 日付と時刻を意味的に表す要素? Mar 12, 2025 pm 04:05 PM

    この記事では、html5&lt; time&gt;について説明します。セマンティックデート/時刻表現の要素。 人間の読み取り可能なテキストとともに、マシンの読みやすさ(ISO 8601形式)のDateTime属性の重要性を強調し、Accessibilitを増やします

    HTML5のクロスブラウザー互換性のベストプラクティスは何ですか? HTML5のクロスブラウザー互換性のベストプラクティスは何ですか? Mar 17, 2025 pm 12:20 PM

    記事では、HTML5クロスブラウザーの互換性を確保するためのベストプラクティスについて説明し、機能検出、プログレッシブエンハンスメント、およびテスト方法に焦点を当てています。

    HTML5フォーム検証属性を使用してユーザー入力を検証するにはどうすればよいですか? HTML5フォーム検証属性を使用してユーザー入力を検証するにはどうすればよいですか? Mar 17, 2025 pm 12:27 PM

    この記事では、ブラウザのユーザー入力を直接検証するために、必要、パターン、MIN、MAX、および長さの制限などのHTML5フォーム検証属性を使用して説明します。

    &lt; iframe&gt;の目的は何ですか タグ?使用する際のセキュリティ上の考慮事項は何ですか? &lt; iframe&gt;の目的は何ですか タグ?使用する際のセキュリティ上の考慮事項は何ですか? Mar 20, 2025 pm 06:05 PM

    この記事では、&lt; iframe&gt;外部コンテンツをWebページ、その一般的な用途、セキュリティリスク、およびオブジェクトタグやAPIなどの代替案に埋め込む際のタグの目的。

    See all articles