<!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>サンプル | JSONからHTMLテーブルを生成する</title> <script src="../../style2/js/jquery-1.11.1.min.js"></script> <script src="JsonToTable.js"></script> <script> function test1(){ //JSON文字列を取得 var str_json=$("#json1").html(); //列オプションの設定 var clmOptions={ 'name1':{'name':'名前1'}, 'dummy':{'visible':false}, 'name2':{'name':'名前2','sanitaize':true}, 'value1':{'name':'値1','mapping':{0:'ネコ',1:'ネズミ',2:'ウシ',3:'トラ'}}, 'value2':{'name':'金額(円)','currency':'jpy'}, 'value3':{'name':'容量','byte_size':true}, }; //テーブル要素の属性オプション var attributes={'id':'tbl1', 'border':1, }; var jsonToTable=new JsonToTable();// JSONからHTMLテーブル生成 jsonToTable.create('#res1',str_json,clmOptions,attributes); } </script> </head> <body> <h2>サンプル | JSONからHTMLテーブルを生成する</h2> <strong>JSON文字列</strong>(テーブルのデータ) <div id="json1"> [{"id":"1","name1":"テストA1","name2":"テストB1","dummy":"ダミー1","value1":"1","value2":"","value3":"","value4":"","date1":"2012/12/12","datetime1":"2012/12/12 12:12:12"}, {"id":"2","name1":"\u003Cspan style='color:red'\u003Eテスト\u003C/span\u003EA2","name2":"\u003Cspan style='color:red'\u003Eテスト\u003C/span\u003EB2","dummy":"ダミー2","value1":"2","value2":"1000","value3":"123456789","value4":"0","date1":"2012/12/13","datetime1":"2012/12/12 12:12:12"}, {"id":"3","name1":"テストA3","name2":"テストB3","dummy":"ダミー3","value1":"3","value2":"10,000.12","value3":"123456","value4":"1","date1":"dummy","datetime1":"dummy"}, {"id":"4","name1":"テストA4","name2":"テストB4","dummy":"ダミー4","value1":"4","value2":"1000000","value3":"99000000000","value4":"2","date1":"2012/12/15","datetime1":"2012/12/12 12:12:12"}] </div> <hr> <input type="button" value="テーブル作成" onclick="test1()" class="btn btn-success" /> <div id="res1" ></div> </body> </html>
| 引数 | 名称 | 説明 |
|---|---|---|
| table_selector | 要素名 |
HTMLテーブルの出力場所をセレクタ名で指定する。 例:"#sample_tbl" |
| str_json | JSON文字列 | テーブルのデータ元であるJSON文字列を指定する。 |
| clmOptions | 列オプション |
列に関する細かなオプションを設定する。 詳しくは下記の「列オプションの設定」に記載。 |
| attributes | テーブル要素の属性オプション | 生成テーブルタグの属性を指定する。 例 attributesの値→ {'id':'test1', 'class':'style_a', }; ↓生成↓ テーブルタグ → <table id="test1" class="style_a" > |
| プロパティ | 説明 |
|---|---|
| name |
列名を指定する。 省略するとキーが表示される。 例→'名前1' |
| sanitaize |
trueにするとXSSサニタイズする。 次の4つの記号「< > " '」をサニタイズする。 省略時はfalse扱い。 |
| mapping |
値に紐づく文字を表示する。 以下のように設定する。 {0:'ネコ',1:'ネズミ',2:'ウシ',3:'トラ'} 値が2である場合、表では「ウシ」と表示される。 |
| currency |
jpyを指定すると3桁区切りの金額表記になる。 1234→¥1,234 現在は日本円のみ対応 |
| byte_size |
バイト容量の表示 数値の大きさによって、次の単位「byte,KB,MB,GB」が自動的に切り替わる。 |
| checkbox |
チェックボックスで表示する。 値には属性オブジェクトを指定する。 例 設定値→'checkbox':{'name':'xxx_name','class':'xxx2'} HTML→<input type='checkbox' name='xxx_name' class='xxx2' /> |
/**
* 日付チェック
*
* @note
* yyyy/mm/dd形式とyyyy-mm-dd形式に対応
* 閏年に対応
* 空値ならfalseを返す。
*
* @param value
* @returns true:入力OK false:入力エラー
*/
_isDate(value){
var ary=value.split("/");
if(ary.length != 3){
ary=value.split("-");
if(ary.length != 3){
return false;;
}
}
let y = ary[0];
let m = ary[1];
let d = ary[2];
let regexp = /^[0-9]*$/;
if(!regexp.test(y)) return false;
if(!regexp.test(m)) return false;
if(!regexp.test(d)) return false;
var dt=new Date(y,m-1,d);
if(dt.getFullYear()!=y || dt.getMonth()!=m-1 || dt.getDate()!=d){
return false;
}
return true;
}
/**
* 年月チェック
* yyyy/mm形式とyyyy-mm形式に対応
* ※注意 onchangeイベントと全角入力では正しく検知できない。
* @param value 年月
* @returns true:入力OK false:入力エラー
*/
function isYM(value){
var ary=value.split("/");
if(ary.length != 2){
ary=value.split("-");
if(ary.length != 2){
return false;;
}
}
let y = ary[0];
let m = ary[1];
let regexp = /^[0-9]*$/;
if(!regexp.test(y)) return false;
if(!regexp.test(m)) return false;
var dt=new Date(y,m-1,1);
if(dt.getFullYear()!=y || dt.getMonth()!=m-1 ){
return false;
}
return true;
}
<html lang="ja"> <head> <meta charset="utf-8"> <script src="jquery-1.11.1.min.js"></script> <script src="cpick.js"></script> </head> <body> <input type="text" name="c1" value="#ff5100" size="12" id="t1" class="html5jp-cpick" /> <input type="text" name="c2" value="#00ff1b" size="12" id="t2" class="html5jp-cpick" /> </body> </html>cpick.jsのダウンロード先
<html lang="ja">
<head>
<meta charset="utf-8">
<script src="jquery-1.11.1.min.js"></script>
<script>
var m_index=0;
var m_handlers=new Array();//setIntervalのハンドラリスト。スレッド停止に使用。
//setIntervalによるスレッドを開始する。
function start(){
var h=setInterval("thread()",100);//スレッド開始。スレッドにする関数と間隔(ミリ秒)を指定する。
m_handlers.push(h);//ハンドラをリストに追加
}
//スレッド。定期的に呼び出される関数
function thread(){
m_index++;
$('#res').html(m_index);
}
//スレッドを停止する。
function stop(){
for(var i=0;i<m_handlers.length;i++){
var h=m_handlers[i];//ハンドラを指定してスレッドを停止する。
clearInterval(h);
}
}
</script>
</head>
<body>
<input type="button" value="start" onclick="start()" />
<input type="button" value="stop" onclick="stop()" />
→<span id="res"></span><br>
</body>
</html>
サンプル
他のスレッド関数について
class Catdog{
/**
* スレッドを開始する
*/
_startThread(){
this.handlers = []; // スレッドのハンドラーリスト
this.main_index = 0;
var h = setInterval(()=>{this.thread();}, 300); // スレッド開始。スレッドにする関数と間隔(ミリ秒)を指定する。
this.handlers.push(h); // ハンドラをリストに追加
}
/**
* スレッド | 定期的に呼び出される関数
*/
thread(){
this.main_index ++;
console.log(this.main_index);
}
/**
* スレッドを停止する。
*/
stopThread(){
for(var i in this.handlers){
var h = this.handlers[i];
clearInterval(h); // スレッド停止
}
}
}
function test(){
var v=$('#xxx').val();
if(isRange(v,-9,20,true)==false){
alert('-9~20で入力してください。必須です。');
}
}
//数値範囲入力チェックのバリデーション
function isRange(v,range1,range2,req){
//必須入力チェック
if(req==true){
if(v == null || v === '' || v === false){
return false;
}
}
//数値チェックをする。
if(isNaN(v)){
return false;
}
//数値範囲チェックをする。
if(range1 <= v && range2 >= v){
return true;
}else{
return false;
}
}
サンプル
//現在日時を取得 var nowDt=new Date().toLocaleString(); //本日を取得 var today=new Date().toLocaleDateString(); //現在時刻を取得 var nowTime=new Date().toLocaleTimeString();参照
UNIXタイムスタンプに変換
var d = new Date(); var u = Math.floor(d);// UNIXタイムスタンプに変換
UNIXタイムスタンプからDateに変換
var d = new Date(u); // UNIXタイムスタンプからDateに変換
jQuery版
var u2 = Math.floor($.now() / 1000);
var str="大きなnekoと小さなneko";
var s1=str.replace('neko','猫');
//出力→ s1=大きな猫と小さなneko
var str="大きなnekoと小さなneko"; var s2=str.replace(/neko/g,'猫'); //出力→ s2=大きな猫と小さな猫
var str="大きなneko1と小さなneko2";
var i=1;
var regexp = new RegExp('neko' + i , 'g');
var s3=str.replace(regexp,'猫');
//出力→ s3=大きな猫とneko2
参照
<;html lang="ja">;
<;head>;
<;meta charset="utf-8">;
<;link rel="stylesheet" type="text/css" href="test_a.css" id="css_x">;
<;script>;
function test_a(){
document.getElementById('css_x').href = 'test_a.css';
}
function test_b(){
document.getElementById('css_x').href = 'test_b.css';
}
<;/script>;
<;/head>;
<;body>;
<;div id="neko">;吾輩は猫である<;/div>;
<;input type="button" value="CSS A" onclick="test_a()" />;
<;input type="button" value="CSS B" onclick="test_b()" />;
<;/body>;
<;/html>;
#neko{
color:red;
}
#neko{
color:blue;
}
サンプル
/**
* 文字数チェックのバリデーション
* @param v 対象文字列
* @param maxLen 制限文字数
* @param req trueは必須入力。0と半角SPは入力ありとみなす。引数省略時はfalse
* @return true:正常 false:異常
*/
function isMaxLength(v,maxLen,req){
//必須入力チェック
if(req==true){
if(v == null || v === '' || v === false){
return false;
}
}
//最大文字数チェックをする。
var n=v.length;
if (n > maxLen){
return false;
}
return true;
}