存在チェック【コールバック型】
<input type="button" value="存在チェック【コールバック型】" onclick="test1('imori.jpg')" />
<script>
function test1(fp){
is_file(fp,function(res){
if(res==true){
alert('ファイルは存在します');
}else{
alert('ファイルは存在しません');
}
});
}
/**
* ファイル存在チェック
* @param fp ファイルパス
* @param callback チェック後に呼び出されるコールバック
*/
function is_file(fp,callback){
$.ajax({
url: fp,
cache: false
}).done(function(data) {
callback(true);
})
.fail(function(jqXHR, textStatus, errorThrown) {
callback(false);
});
}
</script>
存在チェック【同期型】
<input type="button" value="存在チェック【同期型】" onclick="test2('imori.jpg')" />
<script>
function test2(fp){
var flg = is_file2(fp);
if(flg==true){
alert('ファイルは存在します');
}else{
alert('ファイルは存在しません');
}
}
/**
* ファイル存在チェック
* @param fp ファイルパス
*/
function is_file2(fp){
var flg=null;
$.ajax({
url: fp,
cache: false,
async:false
}).done(function(data) {
flg=true;
})
.fail(function(jqXHR, textStatus, errorThrown) {
flg=false;
});
return flg;
}
</script>
var str = "thum/x/thum/neko.png";
str = replace_rev(str,'thum','cat');
console.log(str);// → thum/x/cat/neko.png
/**
* 文字列を末尾から検索して置換する
* @param $search 検索文字列
* @param $replace 置換文字列
* @param $subject 対象文字列
* @return 置換後の文字列
*/
function replace_rev(str,substr,newSubstr){
var lIndex = str.lastIndexOf(substr);
str = str.substring(0, lIndex) + newSubstr + str.substr(lIndex + substr.length);
return str;
}
/** * 一意値(ユニーク値)を取得する * @param myStrong 乱数の桁(省略可) * @returns 一意コード */ function _getUniqueStr(myStrong){ var strong = 1000; if (myStrong) strong = myStrong; return new Date().getTime().toString(16) + Math.floor(strong*Math.random()).toString(16) }解説サイト
番号版
/**
* 一意番号(ユニーク値)を取得する。番号版。
* @param myStrong 乱数の桁(省略可)
* @returns 一意番号 15桁くらい
*/
_getUniqueNo(myStrong){
var strong = 1000;
if (myStrong) strong = myStrong;
let a = new Date().getTime();
let b = Math.floor(strong*Math.random());
let u = a + '' + b;
return u;
}
<script>
if(typeof func_a == 'function') {
console.log('関数は存在する');
} else {
console.log('関数は存在しない');
}
function func_a(){
// ....
}
</script>
<script>
function func_a(v1){
return '猫の名前は' + v1 + 'です';
}
var neko = 'ビッグマン';
var res = window['func_a'](neko);
console.log(res);// → 猫の名前はビッグマンです
</script>
evalを文字列の関数名を実行する
<script>
function func_a(v1){
console.log(v1);
return '猫の名前は' + v1 + 'です';
}
var neko = 'ビッグマン';
//var res = eval("func_a('" + neko + "')");
var res = eval("func_a(neko)");
alert(res); // → 猫の名前はビッグマンです
</script>
evalで実行する関数の引数がオブジェクトである場合
<script>
function func_a(v1){
console.log(v1);
alert(JSON.stringify(v1));
}
var data1 = {'a':123,'b':4567};
eval("func_a(data1)");
// 別の方法
// var json_str = JSON.stringify(data1);
// eval("func_a(" + json_str + ")");
</script>
/**
* データのグループ化
*
* @note
* データをグループフィールドでグループ分けする。
* グループ分けすることにより最初の2次元構造から3次元構造に変換される。
*
* @param array data データ(2次元構造、エンティティの配列)
* @param array group_field グループフィールド
* @return グループ化したデータ(3次元構造)
*/
function _dataGrouping(data,group_field){
data2 = {};
for(var i in data){
var ent = data[i];
var group_value = ent[group_field];
if(_empty(data2[group_value])){
data2[group_value] = [];
}
data2[group_value].push(ent);
}
return data2;
}
使い方はPHP版グループ化と同様である。
<script>
function func_a(v1){
return '猫の名前は' + v1 + 'です';
}
// 関数名'func_a'が存在するかチェックする。
if(typeof window['func_a'] == 'function'){
var neko = 'ビッグマン';
var res = window['func_a'](neko);
console.log(res);// → 猫の名前はビッグマンです
}else{
console.log('存在しない関数です。');
}
</script>
html/javascript
<script src="jquery-1.11.1.min.js"></script>
<script src="ImportFu.js"></script>
<script>
$(function(){
var importFu = new ImportFu({
'fu_slt':'#file1',
'ajax_url':'upload.php',
});
});
</script>
<!-- 略 -->
<input type="file" id="file1" />
var select1 = $('#select1');
_setSizeToSelect(select1,5);
/**
* セレクトボックスにサイズをセット
*
* @note
* スクロールの位置調整も行う
*
* @param selElm セレクトボックス
* @param select_size セレクトのサイズ
*/
function _setSizeToSelect(selElm,select_size){
selElm.attr('size',select_size);
// 現在の選択位置へスクロールする
selElm.each(function(){
var elm = jQuery(this);
elm[0].selectedIndex = elm[0].selectedIndex;// 裏ワザ的なスクロール移動。良い方法とは言えないので別の方法を検討したい。
});
}
<select id="select1" > <option value="1">ニッポンマイマイ</option> <option value="2">カワザンショウガイ</option> <option value="3">バカガイ</option> <option value="4">トウガタカワニナ</option> <option value="5">サワガニ</option> <option value="6">キヌタアゲマキ</option> <option value="7">ニッコウガイ</option> <option value="8">ムシオイガイ</option> <option value="9">オオノガイ</option> <option value="10">カワザンショウガイ</option> <option value="11">オキナガイ</option> <option value="12">スナガニ</option> <option value="13">サワガニ</option> <option value="14" selected>マテガイ</option> <option value="15">チトセノハナガイ</option> <option value="16">マルスダレガイ</option> <option value="17">カワザンショウガイ</option> <option value="18">オカミミガイ</option> <option value="19">アサジガイ</option> <option value="20">トウガタガイ</option> <option value="21">イタヤガイ</option> <option value="22">サワガニ</option> <option value="23">ベッコウマイマイ</option> <option value="24">サワガニ</option> <option value="25">ニッコウガイ</option> <option value="26">ゴマガイ</option> <option value="27">シオサザナミ</option> <option value="28">ヌマエビ</option> </select>