2013年03月08日 Javascript memo [長年日記]
_ Javascript memo
This sample page is meaningless. This is just for "CUT and PASTE" to another javascript program that I develop seriously ;)
jssample.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html lang="ja-jp">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script type="text/javascript">
<!--
//
// Personal Ajax class
//
// ex.
//
// <tag ... onClick='eventHandler(some params...);' ... >
//
// var ajax;
//
// function eventHandler(some params...){
// ajax = new Ajax();
//
// var okArgHash = new Array();
// okArgHash['arg1'] = foo;
// okArgHash['arg2'] = bar;
// okArgHash['arg3'] = boo;
// ajax.setCallBack(okFunc, okArgHash, null, null)
//
// var msgHash = new Array();
// msgHash['argument1'] = FOO;
// msgHash['argument2'] = BAR;
// msgHash['argument3'] = BOO;
// ajax.send("http://foo.org/cgi-bin/foo.cgi", msgHash, true);
// }
//
// function okFunc(obj, okArgHash){
// var recvHash = new Array();
// recvHash = obj.recv();
//
// Your coding with using recvHash['...'] and okArgHash['...']
//
// }
//
function Ajax(){
this.xhr = null;
this.initialize();
}
//
// Initialize property
//
Ajax.prototype.initialize = function(){
if (XMLHttpRequest) {
this.xhr = new XMLHttpRequest();
}else{
try {
this.xhr = new ActiveXObject('MSXML2.XMLHTTP.6.0');
}catch (e){
try {
this.xhr = new ActiveXObject('MSXML2.XMLHTTP.3.0');
}catch (e){
try {
this.xhr = new ActiveXObject('MSXML2.XMLHTTP');
}catch (e){
this.xhr = null;
}
}
}
}
}
//
// Set call back function
//
// notice! : Both of okFunc and ngFunc must have 2 arguments which are obj and arghash
//
// okFunc : call back function for normal
// okArgHash : argument(hash) for okFunc
// ngFunc : call back function for error
// ngArgHash : argument(hash) for ngFunc
//
Ajax.prototype.setCallBack = function(okFunc, okArgHash, ngFunc, ngArgHash){
var obj = this; // You can't use `this' in `function(){}'
obj.xhr.onreadystatechange = function(){
if (obj.xhr.readyState == 4){
if (obj.xhr.status == 200){
if (okFunc != null){
okFunc(obj, okArgHash);
}
}else{
if (ngFunc != null){
ngFunc(obj, ngArgHash);
}
}
}else{
// Not ready, so do nothing
}
}
}
//
// Send message to CGI
//
// uri : URI
// msgHash : message to be sent to server
// async : async mode(true | false)
//
Ajax.prototype.send = function (uri, msgHash, async){
var msg = "";
var amp = "";
for (var i in msgHash){
msg += (amp + i + '=' + encodeURIComponent(msgHash[i]));
amp = "&";
}
this.xhr.open("POST", uri + "?dummy=" + new Date().getTime(), async);
this.xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
this.xhr.send(msg);
}
//
// Recieve message from CGI
//
// return : hash data which is responsed from server
//
Ajax.prototype.recv = function (){
var ary = this.xhr.responseText.split("\t");
var kv = new Array();
var res = new Array();
for (i in ary){
kv = ary[i].split("=");
res[kv[0]] = decodeURIComponent(kv[1]);
i++;
}
return res;
}
// -->
</script>
<title>JavaScript 1</title>
</head>
<body>
<h1>JavaScript 1</h1>
<h2>変数</h2>
<script type="text/javascript">
<!--
var string1, string2, intnum, realnum1, realnum2, octnum, hexnum;
string1 = "文字列です\n文字列です";
string2 = '文字列です\n文字列です';
intnum = 123;
realnum1 = 123.456;
realnum2 = 123.456e2;
octnum = 012;
hexnum = 0x1b;
document.write(string1 + "<br>");
document.write((string1 + string1) + "<br>");
document.write(string2 + "<br>");
document.write((string2 + string2) + "<br>");
document.write(intnum + "<br>");
document.write((intnum + intnum) + "<br>");
document.write(realnum1 + "<br>");
document.write((realnum1 + realnum1) + "<br>");
document.write(realnum2 + "<br>");
document.write((realnum2 + realnum2) + "<br>");
document.write(octnum + "<br>");
document.write((octnum + octnum) + "<br>");
document.write(hexnum + "<br>");
document.write((hexnum + hexnum) + "<br>");
// -->
</script>
<h2>配列</h2>
<script type="text/javascript">
<!--
var a1 = new Array("1個目", "2個目", "3個目");
var a2 = new Array(3);
var a3 = new Array();
a2[0] = "1個目";
a2[1] = "2個目";
a2[2] = "3個目";
a3["apple"] = "red";
a3["lemon"] = "yellow";
a3["lime"] = "green";
document.write(a1[0] + "<br>");
document.write(a2[1] + "<br>");
document.write(a3["lime"] + "<br>");
// -->
</script>
<h2>if文</h2>
<script type="text/javascript">
<!--
var intnum1, intnum2;
intnum1 = 100;
intnum2 = 200;
if (intnum1 == intnum1){
document.write(intnum1 + " == " + intnum1 + "<br>");
}
if (intnum2 > intnum1){
document.write(intnum2 + " > " + intnum1 + "<br>");
}
if (intnum2 >= intnum1){
document.write(intnum2 + " >= " + intnum1 + "<br>");
}
if (intnum1 < intnum2){
document.write(intnum1 + " < " + intnum2 + "<br>");
}
if (intnum1 <= intnum2){
document.write(intnum1 + " <= " + intnum2 + "<br>");
}
if (intnum1 != intnum2){
document.write(intnum1 + " != " + intnum2 + "<br>");
}
if (intnum1 == intnum2){
document.write(intnum1 + " == " + intnum2 + "<br>");
} else if (intnum1 > intnum2){
document.write(intnum1 + " > " + intnum2 + "<br>");
} else {
document.write("ELSE<br>");
}
if ((intnum1 == intnum2) && (intnum1 > intnum2)){
document.write("TRUE<br>");
}else{
document.write("FALSE<br>");
}
if ((intnum1 == intnum2) || (intnum1 < intnum2)){
document.write("TRUE<br>");
}else{
document.write("FALSE<br>");
}
// -->
</script>
<h2>case文</h2>
<script type="text/javascript">
<!--
var intnum;
intnum = 100;
switch(intnum){
case 1:
document.write("case 1<br>");
break;
case 10:
document.write("case 10<br>");
break;
case 100:
document.write("case 100<br>");
break;
default:
document.write("case default<br>");
break;
}
// -->
</script>
<h2>while文</h2>
<script type="text/javascript">
<!--
var i;
i = 0;
while (i < 3){
document.write("while " + i + "<br>");
i++;
}
// -->
</script>
<h2>for文</h2>
<script type="text/javascript">
<!--
var i;
for (i = 0; i < 3; i++){
document.write("for " + i + "<br>");
}
// -->
</script>
<h2>for文(配列)</h2>
<script type="text/javascript">
<!--
var a = new Array(3);
var idx;
a["lemon"] = "yellow";
a["apple"] = "red";
a["melon"] = "green";
for (idx in a){
document.write(idx + " : " + a[idx] + "<br>");
}
// -->
</script>
<h2>break文</h2>
<script type="text/javascript">
<!--
var i;
i = 0;
while (i < 1000){
document.write("break " + i + "<br>");
i++;
if (i > 3){
break;
}
}
// -->
</script>
<h2>continue文</h2>
<script type="text/javascript">
<!--
var i;
i = 0;
for (i = 0; i < 5; i++){
if (i == 2){
continue;
}
document.write("break " + i + "<br>");
}
// -->
</script>
<h2>演算子</h2>
<script type="text/javascript">
<!--
var i, j;
i = 10;
j = 3;
document.write((i + j) + "<br>");
document.write((i - j) + "<br>");
document.write((i * j) + "<br>");
document.write((i / j) + "<br>");
document.write((i % j) + "<br>");
i++;
document.write(i + "<br>");
j--;
document.write(j + "<br>");
// -->
</script>
<h2>ビット演算子</h2>
<script type="text/javascript">
<!--
var i, j;
i = 0x55;
j = 0xf0;
document.write((i & j).toString(16) + "<br>");
document.write((i | j).toString(16) + "<br>");
document.write((i ^ j).toString(16) + "<br>");
document.write((~i).toString(16) + "<br>");
document.write((i << 1).toString(16) + "<br>");
document.write((i >> 1).toString(16) + "<br>");
// -->
</script>
<h2>indexOf</h2>
<script type="text/javascript">
<!--
var str1, str2, offset;
str1 = "あいうえおあいうえお";
str2 = "うえ";
offset = 0;
document.write(str1.indexOf(str2, offset) + "<br>");
offset = 3;
document.write(str1.indexOf(str2, offset) + "<br>");
// -->
</script>
<h2>length</h2>
<script type="text/javascript">
<!--
var str;
str = "あいうえおあいうえお";
document.write(str.length + "<br>");
// -->
</script>
<h2>charAt</h2>
<script type="text/javascript">
<!--
var str, position;
str = "あいうえおあいうえお";
position = 3;
document.write(str.charAt(position) + "<br>");
// -->
</script>
<h2>substring</h2>
<script type="text/javascript">
<!--
var str, from, to;
str = "あいうえおあいうえお";
from = 3;
to = 6;
document.write(str.substring(from, to) + "<br>");
// -->
</script>
<h2>split</h2>
<script type="text/javascript">
<!--
var str, sep, lim;
str = "あいう,えおあ,いうえお";
sep = ",";
lim = 2;
a1 = str.split(sep);
document.write(a1[0] + "<br>");
document.write(a1[1] + "<br>");
document.write(a1[2] + "<br>");
a2 = str.split(sep, lim);
document.write(a2[0] + "<br>");
document.write(a2[1] + "<br>");
document.write(a2[2] + "<br>");
// -->
</script>
<h2>replace</h2>
<script type="text/javascript">
<!--
var str;
str = "あいう,えおあ,いうえお";
document.write(str.replace(/,/g, "|") + "<br>");
// -->
</script>
<h2>toUpperCase</h2>
<script type="text/javascript">
<!--
var str;
str = "This Is Javascript.";
document.write(str.toUpperCase() + "<br>");
// -->
</script>
<h2>toLowerCase</h2>
<script type="text/javascript">
<!--
var str;
str = "This Is Javascript.";
document.write(str.toLowerCase() + "<br>");
// -->
</script>
<h2>match</h2>
<script type="text/javascript">
<!--
var str;
str = "This Is Javascript.";
if (str.match(/This.*script/)){
document.write("TRUE<br>");
}else{
document.write("FALSE<br>");
}
// -->
</script>
<h2>search</h2>
<script type="text/javascript">
<!--
var str;
str = "This Is Javascript.";
document.write(str.search(/Is Java/) + "<br>");
document.write(str.search(/Is Ruby/) + "<br>");
// -->
</script>
<h2>Number</h2>
<script type="text/javascript">
<!--
var strnum1, strnum2;
strnum1 = "10";
strnum2 = "20.5";
document.write((strnum1 + strnum2) + "<br>");
document.write((Number(strnum1) + Number(strnum2)) + "<br>");
// -->
</script>
<h2>parseFloat</h2>
<script type="text/javascript">
<!--
var strnum1, strnum2;
strnum1 = "10";
strnum2 = "20.5";
document.write((strnum1 + strnum2) + "<br>");
document.write((parseFloat(strnum1) + parseFloat(strnum2)) + "<br>");
// -->
</script>
<h2>parseInt</h2>
<script type="text/javascript">
<!--
var strnum1, strnum2;
strnum1 = "10";
strnum2 = "20.5";
document.write((strnum1 + strnum2) + "<br>");
document.write((parseInt(strnum1) + parseInt(strnum2)) + "<br>");
// -->
</script>
<h2>String</h2>
<script type="text/javascript">
<!--
var num1, num2;
num1 = 10;
num2 = 20.5;
document.write((num1 + num2) + "<br>");
document.write((String(num1) + String(num2)) + "<br>");
// -->
</script>
<h2>escape, unescape</h2>
<script type="text/javascript">
<!--
var str;
str = "あいうえお";
document.write(escape(str) + "<br>");
document.write(unescape(escape(str)) + "<br>");
// -->
</script>
<h2>encodeURIComponent, decodeURIComponent</h2>
<script type="text/javascript">
<!--
var str;
str = "あいうえお";
document.write(encodeURIComponent(str) + "<br>");
document.write(decodeURIComponent(encodeURIComponent(str)) + "<br>");
// -->
</script>
<h2>eval</h2>
<script type="text/javascript">
<!--
var str;
str = 'document.write("EVAL<br>");'
eval(str);
// -->
</script>
<h2>Math</h2>
<script type="text/javascript">
<!--
document.write(Math.random() + "<br>");
document.write(Math.ceil(1.23) + "<br>");
document.write(Math.floor(1.23) + "<br>");
document.write(Math.round(1.23) + "<br>");
document.write(Math.abs(-1.23) + "<br>");
document.write(Math.pow(2, 3) + "<br>");
document.write(Math.sqrt(2) + "<br>");
// -->
</script>
<h2>Date</h2>
<script type="text/javascript">
<!--
var d1, d2;
d1 = new Date();
d2 = new Date(2012,4,11,23,59,59);
document.write(d1.getFullYear() + "<br>");
document.write(d1.getMonth() + "<br>");
document.write(d1.getDate() + "<br>");
document.write(d1.getDay() + "<br>");
document.write(d1.getHours() + "<br>");
document.write(d1.getMinutes() + "<br>");
document.write(d1.getSeconds() + "<br>");
document.write(d2.getFullYear() + "<br>");
document.write(d2.getMonth() + "<br>");
document.write(d2.getDate() + "<br>");
document.write(d2.getDay() + "<br>");
document.write(d2.getHours() + "<br>");
document.write(d2.getMinutes() + "<br>");
document.write(d2.getSeconds() + "<br>");
// -->
</script>
<h2>alert</h2>
<input type="button" value="alert" id="alert">
<script type="text/javascript">
<!--
document.getElementById("alert").onclick = function(e){
window.alert("ハロー\nワールド");
}
// -->
</script>
<h2>confirm</h2>
<input type="button" value="confirm" id="confirm">
<script type="text/javascript">
<!--
document.getElementById("confirm").onclick = function(e){
if (window.confirm("ハロー\nワールド")){
document.getElementById("confirm").value = "confirm TRUE";
}else{
document.getElementById("confirm").value = "confirm FALSE";
}
}
// -->
</script>
<h2>prompt</h2>
<input type="button" value="prompt" id="prompt">
<script type="text/javascript">
<!--
document.getElementById("prompt").onclick = function(e){
var str;
str = window.prompt("何か入力してください:");
document.getElementById("prompt").value = "prompt " + str;
}
// -->
</script>
<h2>print</h2>
<input type="button" value="print" id="print">
<script type="text/javascript">
<!--
document.getElementById("print").onclick = function(e){
window.print();
}
// -->
</script>
<h2>setTimeout</h2>
<input type="button" value="setTimeout" id="setTimeout">
<script type="text/javascript">
<!--
var TimeoutId;
function timeout_func(){
window.alert("Timeout happen");
window.clearTimeout(TimeoutId);
}
document.getElementById("setTimeout").onclick = function(e){
TimeoutId = window.setTimeout(timeout_func, 3 * 1000);
}
// -->
</script>
<h2>setInterval</h2>
<input type="button" value="setInterval" id="setInterval">
<script type="text/javascript">
<!--
var IntervalId;
function interval_func(){
if (window.confirm("Cancel interval?")){
window.clearInterval(IntervalId);
}
}
document.getElementById("setInterval").onclick = function(e){
IntervalId = window.setInterval(interval_func, 3 * 1000);
}
// -->
</script>
<h2>getElementById</h2>
<input type="button" value="getElementById" id="getElementById"><br>
<span id="getElementById_span">This is span area</span><br>
<textarea id="getElementById_textarea">This is text area</textarea>
<script type="text/javascript">
<!--
document.getElementById("getElementById").onclick = function(e){
var span = document.getElementById("getElementById_span");
var textarea = document.getElementById("getElementById_textarea");
for (var i = 0; i < span.childNodes.length; i++){
window.alert(span.childNodes.item(i).nodeValue);
}
var max = span.childNodes.length;
for (var i = 0; i < max; i++){
span.removeChild(span.childNodes.item(0));
}
span.appendChild(document.createTextNode("ここはスパン領域です"));
window.alert(textarea.value);
textarea.value = "ここはテキストエリアです";
}
// -->
</script>
<h2>style</h2>
<input type="text" value="This is text1" id="style_text1" />
<input type="text" value="This is text2" id="style_text2" /><br>
<input type="text" value="This is text3" id="style_text3" />
<input type="text" value="This is text4" id="style_text4" /><br>
<input type="text" value="This is text5" id="style_text5" />
<input type="text" value="This is text6" id="style_text6" /><br>
<div id="style_div"></div>
<textarea id="style_textarea">This is textarea</textarea><br>
<p id="style_p">This is p</p>
<table border="1">
<tr><th>header1</th><th>header2</th><th>header3</th></tr>
<tr><td>data1</td><td>data2</td><td>data3</td></tr>
<tr><td>data4</td><td id="style_td"></td><td>data6</td></tr>
<tr><td>data7</td><td>data8</td><td>data9</td></tr>
</table><br>
<input type="button" value="display none" id="style_display_none">
<input type="button" value="display block" id="style_display_block">
<input type="button" value="display inline" id="style_display_inline"><br>
<input type="button" value="visibility hidden" id="style_visibility_hidden">
<input type="button" value="visibility visible" id="style_visibility_visible"><br>
<input type="text" value="This is text7" id="style_text7" /><br>
<input type="text" value="This is text8" id="style_text8" /><br>
<input type="text" value="This is text9" id="style_text9" /><br>
<input type="button" value="position static" id="style_position_static">
<input type="button" value="position absolute" id="style_position_absolute">
<input type="button" value="position relative" id="style_position_relative">
<input type="button" value="position fixed" id="style_position_fixed"><br>
<input type="text" value="This is text10" id="style_text10" /><br>
<input type="button" value="z-index 1up" id="style_z_index1">
<input type="button" value="z-index 2up" id="style_z_index2"><br>
<span id="style_span1">This is span1</span>
<span id="style_span2">This is span2</span>
<script type="text/javascript">
<!--
var text1 = document.getElementById("style_text1");
var text2 = document.getElementById("style_text2");
var text3 = document.getElementById("style_text3");
var text4 = document.getElementById("style_text4");
var text5 = document.getElementById("style_text5");
var text6 = document.getElementById("style_text6");
var div = document.getElementById("style_div");
var textarea = document.getElementById("style_textarea");
var p = document.getElementById("style_p");
var td = document.getElementById("style_td");
var display_none = document.getElementById("style_display_none");
var display_block = document.getElementById("style_display_block");
var display_inline = document.getElementById("style_display_inline");
var visibility_hidden = document.getElementById("style_visibility_hidden");
var visibility_visible = document.getElementById("style_visibility_visible");
var text7 = document.getElementById("style_text7");
var text8 = document.getElementById("style_text8");
var text9 = document.getElementById("style_text9");
var position_static = document.getElementById("style_position_static");
var position_absolute = document.getElementById("style_position_absolute");
var position_relative = document.getElementById("style_position_relative");
var position_fixed = document.getElementById("style_position_fixed");
var text10 = document.getElementById("style_text10");
var z_index1 = document.getElementById("style_z_index1");
var z_index2 = document.getElementById("style_z_index2");
var span1 = document.getElementById("style_span1");
var span2 = document.getElementById("style_span2");
text1.style.color = "red";
text1.style.background = "green";
text2.style.color = "red";
text2.style.background = "green";
text3.style.color = "red";
text3.style.background = "green";
text4.style.color = "red";
text4.style.background = "green";
text1.style.margin = "3em";
text2.style.marginRight = "5px";
text2.style.marginLeft = "10px";
text2.style.marginTop = "15px";
text2.style.marginBottom = "20px";
text2.style.padding = "3em";
text3.style.paddingRight = "5px";
text3.style.paddingLeft = "10px";
text3.style.paddingTop = "15px";
text3.style.paddingBottom = "20px";
text3.style.border = "3px solid black";
text4.style.borderRight = "3px dotted black";
text4.style.borderLeft = "3px dashed black";
text4.style.borderTop = "3px double black";
text4.style.borderBottom = "3px none black";
text1.style.borderRadius = "10px";
text2.style.borderRadius = "10px 20px 30px 40px";
var ua = navigator.userAgent.toLowerCase();
if (ua.indexOf("msie") == -1){
text3.style.opacity = "0.7";
text4.style.opacity = "0.9";
}else{
text3.style.filter = "alpha(opacity=" + (0.7 * 100) + ")";
text4.style.filter = "alpha(opacity=" + (0.9 * 100) + ")";
}
text1.style.textAlign = "left";
text2.style.textAlign = "right";
text3.style.textAlign = "center";
var ua = navigator.userAgent.toLowerCase();
if (ua.indexOf("msie") == -1){
text5.style.cssFloat = "left";
text6.style.cssFloat = "right";
}else{
text5.style.styleFloat = "left";
text6.style.styleFloat = "right";
}
div.style.clear = "both";
text6.style.width = "20em";
text6.style.height = "3em";
textarea.cols = "50";
textarea.rows = "5";
textarea.style.resize = "none"; // both, virtical, horizontal
p.style.textIndent = "5em";
p.style.textDecoration = "line-through"; // none, underline, overline, blink
td.style.emptyCells = "hide"; // show
text6.style.imeMode = "active"; // IE only :( auto, inactive, disable
text6.style.cursor = "crosshair"; // default, auto, ...
display_none.onclick = function(e){
text8.style.display = "none";
}
display_block.onclick = function(e){
text8.style.display = "block";
}
display_inline.onclick = function(e){
text8.style.display = "inline";
}
visibility_hidden.onclick = function(e){
text8.style.visibility = "hidden";
}
visibility_visible.onclick = function(e){
text8.style.visibility = "visible";
}
position_static.onclick = function(e){
text10.style.position = "static";
}
position_absolute.onclick = function(e){
text10.style.position = "absolute";
text10.style.left = "20em";
text10.style.top = "10em";
text10.style.right = "";
text10.style.bottom = "";
}
position_relative.onclick = function(e){
text10.style.position = "relative";
text10.style.left = "20em";
text10.style.top = "10em";
text10.style.right = "";
text10.style.bottom = "";
}
position_fixed.onclick = function(e){
text10.style.position = "fixed";
text10.style.left = "40em";
text10.style.top = "20em";
text10.style.right = "";
text10.style.bottom = "";
}
z_index1.onclick = function(e){
span1.style.zIndex = 1;
span2.style.zIndex = 0;
}
z_index2.onclick = function(e){
span1.style.zIndex = 0;
span2.style.zIndex = 1;
}
span1.style.position = "fixed";
span1.style.right = "0em";
span1.style.bottom = "0em";
span1.style.background = "green";
span2.style.position = "fixed";
span2.style.right = "0.5em";
span2.style.bottom= "0.5em";
span2.style.background = "orange";
// -->
</script>
<h2>class</h2>
<input type="text" id="class_text1" />
<input type="text" id="class_text2" />
<input type="text" id="class_text3" />
<script type="text/javascript">
<!--
var class_text1 = document.getElementById("class_text1");
var class_text2 = document.getElementById("class_text2");
var class_text3 = document.getElementById("class_text3");
function inherit(o){
if (Object.create){
return Object.create(o);
}
var F = function(){};
F.prototype = o;
return new F();
}
function Parent(property1, property2){
this.property1;
this.property2;
this.initParent(property1, property2);
}
Parent.prototype.initParent = function(property1, property2){
this.property1 = property1;
this.property2 = property2;
}
Parent.prototype.show1 = function(o){
o.value = this.property1;
}
Parent.prototype.show2 = function(o){
o.value = this.property2;
}
function Child(property1, property2, property3){
Parent.call(this, property1, property2);
this.property3;
this.initChild(property3);
}
Child.prototype = inherit(Parent.prototype);
Child.prototype.constructor = Child;
Child.prototype.initChild = function(property3){
this.property3 = property3;
}
Child.prototype.show3 = function(o){
o.value = this.property3;
}
var child = new Child("arg1", "arg2", "arg3");
child.show1(class_text1);
child.show2(class_text2);
child.show3(class_text3);
// -->
</script>
<h2>value</h2>
<input type="text" value="This is value_text1" id="value_text1" />
<input type="text" id="value_text2" />
<script type="text/javascript">
<!--
document.getElementById("value_text2").value = "copy => " + document.getElementById("value_text1").value;
// -->
</script>
<h2>nodeValue</h2>
<span id="nodevalue_span1">This is span1</span>
<span id="nodevalue_span2">This is span2</span>
<script type="text/javascript">
<!--
var max = document.getElementById("nodevalue_span2").childNodes.length;
for (var i = 0; i < max; i++){
document.getElementById("nodevalue_span2").removeChild(document.getElementById("nodevalue_span2").childNodes.item(0));
}
var str = "";
max = document.getElementById("nodevalue_span1").childNodes.length;
for (var i = 0; i < max; i++){
str += document.getElementById("nodevalue_span1").childNodes.item(i).nodeValue;
}
document.getElementById("nodevalue_span2").appendChild(document.createTextNode("copy => " + str));
// -->
</script>
<h2>setAttribute</h2>
<input type="text" id="setattribute_text" />
<script type="text/javascript">
<!--
document.getElementById("setattribute_text").setAttribute("value", "This is setattibute_text");
// -->
</script>
<h2>event</h2>
<input type="text" value="event onclick" id="event_onclick" /><br>
<input type="text" value="event ondblclick" id="event_ondblclick" /><br>
<input type="text" value="event onkeydown" id="event_onkeydown" /><br>
<input type="text" value="event onkeypress" id="event_onkeypress" /><br>
<input type="text" value="event onkeyup" id="event_onkeyup" /><br>
<input type="text" value="event onmouseup" id="event_onmouseup" /><br>
<input type="text" value="event onmousedown" id="event_onmousedown" /><br>
<input type="text" value="event onmouseover" id="event_onmouseover" /><br>
<input type="text" value="event onmouseout" id="event_onmouseout" /><br>
<textarea id="event_onmousemove" />event onmousemove</textarea><br>
<input type="text" value="event onfocus" id="event_onfocus" /><br>
<input type="text" value="event onblur" id="event_onblur" /><br>
<input type="text" value="event onchange" id="event_onchange" /><br>
<form id="event_form">
<input type="submit" value="event onsubmit" /><br>
<input type="reset" value="event onreset" /><br>
<!-- <input type="text" value="event onresize(windowのサイズを変えて下さい)" id="event_onresize" /><br> -->
</form>
<input type="text" value="event onselect" id="event_onselect1" />
<input type="text" id="event_onselect2" /><br>
window.onload<br>
window.onunload
<script type="text/javascript">
<!--
document.getElementById("event_onclick").onclick = event_trap;
document.getElementById("event_ondblclick").ondblclick = event_trap;
document.getElementById("event_onkeydown").onkeydown = event_trap;
document.getElementById("event_onkeypress").onkeypress = event_trap;
document.getElementById("event_onkeyup").onkeyup = event_trap;
document.getElementById("event_onmouseup").onmouseup = event_trap;
document.getElementById("event_onmousedown").onmousedown = event_trap;
document.getElementById("event_onmouseover").onmouseover = event_trap;
document.getElementById("event_onmouseout").onmouseout = event_trap;
document.getElementById("event_onmousemove").onmousemove = event_trap_onmousemove;
document.getElementById("event_onfocus").onfocus = event_trap;
document.getElementById("event_onblur").onblur = event_trap;
document.getElementById("event_onchange").onchange = event_trap;
document.getElementById("event_form").onsubmit = event_trap_with_false;
document.getElementById("event_form").onreset = event_trap;
// window.onresize = event_trap;
document.getElementById("event_onselect1").onselect = event_trap_onselect;
window.onload = event_trap;
window.onunload = event_trap;
function event_trap(e){
if (!e){
e = window.event;
}
event_show(e, "event_trap");
}
function event_trap_onmousemove(e){
if (!e){
e = window.event;
}
if (e.pageX){
var abs_x = e.pageX;
}else{
// var abs_x = e.clientX + document.body.scrollLeft; // for loose.dtd
var abs_x = e.clientX + document.documentElement.scrollLeft; // for strict.dtd
}
if (e.pageY){
var abs_y = e.pageY;
}else{
// var abs_y = e.clientY + document.body.scrollTop; // for loose.dtd
var abs_y = e.clientY + document.documentElement.scrollTop; // for strict.dtd
}
var fix_x = e.clientX;
var fix_y = e.clientY;
document.getElementById("event_onmousemove").value =
"absolute X = " + abs_x + "\n" +
"absolute Y = " + abs_y + "\n" +
"fixed X = " + fix_x + "\n" +
"fixed Y = " + fix_y;
}
function event_trap_with_false(e){
if (!e){
e = window.event;
}
event_show(e, "event_trap_with_false");
return false;
}
function event_trap_onselect(e){
if (!e){
e = window.event;
}
var text;
if (window.getSelection){
if (document.activeElement &&
(document.activeElement.tagName.toLowerCase() == "textarea" ||
document.activeElement.tagName.toLowerCase() == "input")){
text = document.activeElement.value.substring(
document.activeElement.selectionStart,
document.activeElement.selectionEnd
);
}else{
text = window.getSelection().toString();
}
}else{
text = document.selection.createRange().text;
}
document.getElementById("event_onselect2").value = text;
}
function event_show(e, arg){
var str;
str = "== " + arg + " ==\n";
str += "event.type = " + e.type + "\n";
str += "event.keyCode = " + e.keyCode + "\n";
str += "event.shiftKey = " + e.shiftKey + "\n";
str += "event.ctrlKey = " + e.ctrlKey + "\n";
str += "event.altKey = " + e.altKey + "\n";
str += "event.button = " + e.button + "\n";
str += "event.screenX = " + e.screenX + "\n";
str += "event.screenY = " + e.screenY + "\n";
str += "event.clientX = " + e.clientX + "\n";
str += "event.clientY = " + e.clientY + "\n";
str += "event.x = " + e.x + "\n";
str += "event.y = " + e.y + "\n";
str += "event.offsetX = " + e.offsetX + "\n";
str += "event.offsetY = " + e.offsetY + "\n";
str += "event.srcElement = " + e.srcElement + "\n";
str += "event.fromElement = " + e.fromElement + "\n";
str += "event.target = " + e.target + "\n";
str += "event.data = " + e.data + "\n";
str += "event.which = " + e.which + "\n";
str += "event.modifiers = " + e.modifiers + "\n";
str += "event.pageX = " + e.pageX + "\n";
str += "event.pageY = " + e.pageY + "\n";
str += "event.width = " + e.width + "\n";
str += "event.height = " + e.height + "\n";
str += "event.layerX = " + e.layerX + "\n";
str += "event.layerY = " + e.layerY + "\n";
str += "document.body.scrollLeft = " + document.body.scrollLeft + "\n";
str += "document.body.scrollTop = " + document.body.scrollTop + "\n";
str += "\n";
str += "== Other event ==\n";
str += "imgタグ.onabort\n";
str += "imgタグ.onerror\n";
window.alert(str);
}
// -->
</script>
<h2>ajax</h2>
<input type="text" id="ajax_text1" />
<input type="text" id="ajax_text2" />
<script type="text/javascript">
<!--
var ajax;
document.getElementById("ajax_text1").onchange = ajax_text1;
function ajax_text1(e){
if (!e){
e = window.event;
}
eventHandler(document.getElementById("ajax_text1").value);
}
function eventHandler(arg1){
ajax = new Ajax();
var okArgHash = new Array();
var ngArgHash = new Array();
ajax.setCallBack(okFunc, okArgHash, ngFunc, ngArgHash)
var msgHash = new Array();
msgHash['arg1'] = arg1;
ajax.send("./cgi-bin/ajax_test.cgi", msgHash, true);
}
function okFunc(obj, okArgHash){
var recvHash = new Array();
recvHash = obj.recv();
document.getElementById("ajax_text2").value = recvHash['arg1'];
}
function ngFunc(obj, ngArgHash){
var recvHash = new Array();
recvHash = obj.recv();
document.getElementById("ajax_text2").value = recvHash['arg1'];
}
// -->
</script>
</body>
</html>
ajax.rb
# -*- coding: utf-8 -*-
#============================================================
#
# Ajaxサポートクラス(あぁ楽しき哉、車輪の再発明)
#
#============================================================
class Ajax
#------------------------------------------------------------
#
# コンストラクタ
#
# 引数
#
# nkf_param : 入力パラメータの文字コード変換指定(for nkf)。省略可。
# nkf_param_send : 送信パラメータの文字コード変換指定(for nkf)。省略可。
#
# 戻値 : 無し
#
#------------------------------------------------------------
def initialize(nkf_param = "-X -e", nkf_param_send = "-w")
@nkf_param = nkf_param
@nkf_param_send = nkf_param_send
@cgi = CGI.new("html3")
end
#------------------------------------------------------------
#
# パラメータ取得
#
# 引数
#
# name : 項目名称。省略可。
#
# 戻値
#
# name指定時は、指定した項目の値を返す。
# name未指定は、全パラメータの[項目名、値]のセットをイテレータで返す。
#
#------------------------------------------------------------
def get(name = "")
if (name == "")
@cgi.each do |key, val|
yield(key, NKF.nkf(@nkf_param, val))
end
else
return NKF.nkf(@nkf_param, @cgi[name])
end
end
#------------------------------------------------------------
#
# レスポンス送信
#
# 引数
#
# hash : 送信データ。ハッシュ形式。
# boolean_head : HTTPヘッダーを送信(true)/非送信(false)の指定。省略可。
# head_str : HTTPヘッダーの内容。省略可。
#
# 戻値 : 無し
#
#------------------------------------------------------------
def send(hash = {}, boolean_head = true, head_str = "Content-Type: text/html\n\n")
if (boolean_head)
print head_str
end
i = 0
hash.each do |key, val|
print "#{key}="
print URI.escape(NKF.nkf(@nkf_param_send, val),/[^-_.!~*'()a-zA-Z\d]/n)
i += 1
if (i < hash.size)
print "\t"
end
end
end
end
ajax_test.cgi
#! /usr/local/bin/ruby -I.
# -*- coding: utf-8 -*-
require "cgi"
require "uri"
require "nkf"
require "ajax"
#============================================================
#
# Main
#
#============================================================
ajax = Ajax.new("-X -w", "-X -w")
arg1 = ajax.get("arg1")
hash = {
"arg1" => "response=(" + arg1 + ")",
}
ajax.send(hash)
exit 0
[ツッコミを入れる]