勉強したことのメモ

webプログラマ見習いが勉強したことのメモ。

imgタグで作成したグラフをjQueryでリアルタイムに動かす

      2014/07/03

このグラフをリアルタイムプレビューさせる。

■サンプル
http://sample.taitan916.info/graph/

■ソース
<?php
$max_a = 0;
for ($i=0; $i<5; $i++) {
$graph_val[$i] = rand(1,50);
$max_a += $graph_val[$i];
}
$max_b = max($graph_val);
?>
<!DOCTYPE HTML>
<html lang="ja">
<head>
<meta charset="UTF-8">
<style>
.graph {
min-width:300px; min-height:300px; border:solid 1px;
}
</style>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script>
$(function(){
$("[name='graph_value']").bind('keyup change', function(){ //項目をいじった際にイベント
var i = 0;
var max_a = 0;
var graph_array = new Array();
$("[name='graph_value
']").each(function() {
graph_array[i] = $("[name='graph_value']").eq(i).val();
max_a += Number(graph_array[i]); //項目の合計値
i++;
});
var max_b = Math.max.apply(null, graph_array); //項目の最大値
for(i=0; i<graph_array.length; i++){
$(".class_title1_"+i).text(graph_array[i]);
$(".class_change1_"+i).css('width',(Math.floor(graph_array[i] / max_a * 100))+'%');
$(".class_title2_"+i).text(graph_array[i]);
$(".class_change2_"+i).css('width',(Math.floor(graph_array[i] / max_b * 100))+'%');
}
});
})
</script>
<title>graph</title>
</head>
<body>
<h1>graph</h1>
<table>
<tr>
<td>
<?php
for ($i=0; $i<5; $i++) {
echo "項目" . ($i+1) . ":
<input type='text' name='graph_value
' style='width:30px' value='{$graph_val[$i]}'><br>";
}
?>
</td>
</tr>
<tr>
<td class="graph">
■本当の割合を出したもの<br>
<?php
for ($i=0; $i<5; $i++) {
echo "項目" . ($i+1) . ":<span class='class_title1_{$i}'>{$graph_val[$i]}</span><br>
<img src='./image/graph.jpg' style='height:10px; width:" . (floor($graph_val[$i] / $max_a * 100)) . "%;' class='class_change1_{$i}'><br>";
}
?>
</td>
<td class="graph">
■最大の結果を100%にして出したもの<br>
<?php
for ($i=0; $i<5; $i++) {
echo "項目" . ($i+1) . ":<span class='class_title2_{$i}'>{$graph_val[$i]}</span><br>
<img src='./image/graph.jpg' style='height:10px; width:" . (floor($graph_val[$i] / $max_b * 100)) . "%;' class='class_change2_{$i}'><br>";
}
?>
</td>
</tr>
</table>
</body>
</html>

■その他
Math.max.apply(null, graph_array)
PHPのmax関数みたいに配列の最大値を取得できる。

Number(graph_array[i])
整数値に変換。

 - jQuery, PHP

  関連記事

images
PHPで数字のプラスとマイナスを反転させる

gmp_neg http://php.net/manual/ja/functio ...

jquery_logo
画像の登録フォームにてjQueryプラグインを用いてWebカメラの映像を撮影させる方法

form内の画像アップロード部分にて、通常であれば画像ファイルを参照させたものを ...

images
preg_matchについて

PHPでのpreg_matchについて教わることがあったのでメモ。 ■参考サイト ...

images
ページング処理用PHP

/* @内容 ページング処理のfunction @使い方 //******親ペー ...

images
PHPでファイルパスorフォルダパスの確認

PHPで画像とか触る際にフォルダのパス、ファイルのパスを 知りたいことがあったの ...

images
PHPの文字化け対策

PHPファイルもDBも全部UTF-8で出来たらいいけど、 そうもいかない場合が多 ...

images
PHP側での画像最大アップロードサイズの確認

画像がアップロードできず、恐らくサイズ指定にひっかかっているので 最大サイズを調 ...

jquery_logo
テキストエリアを自動でリサイズ

改行するだけで勝手にリサイズしてくれるので、 ユーザー用でも管理用でも使えそう。 ...

jquery_logo
pjaxについてのメモ

ずっと気になっていたpjaxについてのメモ。 ■参考サイト http://chi ...

images
PHPで画像のフォーマット(拡張子)の変換

画像のアップロードでjpg/png/gif形式を受け付けつつ、 最終的にjpgで ...