<input type="text" name="hoge" id="hoge" value="999" >
// ◆ prototype.js
$F('hoge');
// ◆ prototype.js
$F('hoge');
// ◆ prototype.js
var data = $A(document.FM.radio_id).find(function(v) {return v.checked;});
<label><input type="checkbox" id="cb1_id" name="cb1" value="あいうえお" />あいうえお</label>
// ◆ prototype.js
alert( $F('cb1') );
# ● GoogleによるJavaScriptホスティング(CDN)を使用する
https://developers.google.com/speed/libraries/
### 使用方法( jQuery 2系を呼び出す )
```
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
```
### 使用方法( jQuery 3系を呼び出す )
```
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
```
JavaScriptでのスタイルの取得は
prototype.js を使って
Element.getStyle(element, cssProperty)
ですが、
Prototype.jsを使わず(JavaScriptだけで)行う場合は
var style = element.currentStyle || document.defaultView.getComputedStyle(element, '') alert(style.width);
でOKです。
参考:http://d.hatena.ne.jp/amachang/20070611/1181554170
「ツールチップ」とはオンマウス時に表示される画像やテキストのことです。
Windows IEで画像の上にマウスを置いてしばらく待つとALT属性が見えるというアレですね。
これを簡単に実装するライブラリを紹介。jQuery、prototype.js プラグインメインで探してみました。
■ script.js ( prototype.js jQuery不必要 )
http://www.leigeber.com/2008/06/javascript-tooltip/
・おすすめ
・ツールチップがフェードして現れます
■ cooltips ( 要prototype.js , script.aculo.us )
http://okonet.ru/projects/tooltips/index.html
・フェードエフェクトで出現するツールチップ
・ツールチップ枠のデザインはあらかじめ用意されたものを使用することになりそう…。
■ jTip A jQuery Tool Tip ( 要 jQuery )
http://www.codylindley.com/blogstuff/js/jtip/
・Ajaxで動的にツールチップの中身を読み込んで表示します。
・日本語テキストを扱うにはハックする必要がありそう…。
・ツールチップ枠のデザインはあらかじめ用意されたものを使用することになりそう…。
■ jQuery plugin: Tooltip ( 要 jQuery )
http://bassistance.de/jquery-plugins/jquery-plugin-tooltip/
title属性やファイル名をツールチップとして表示させるというライブラリ。
オンマウスになった瞬間に表示されます。
<script type="text/javascript" src="jquery.tooltip.pack.js"></script>
<link rel="stylesheet" type="text/css" href="jquery.tooltip.css" >
<script>
jQuery('img').tooltip({
delay: 0,
track: true ,
showURL: false
});
</script>
http://docs.jquery.com/Plugins/Tooltip/tooltip#toptions
その他 jQueryライブラリはこちらで取り上げられてます
http://coliss.com/articles/build-websites/operation/javascript/356.html
例えば id="hogehoge" の中身を書き換えるには
var mytext='aiueo';
$('hogehoge').innerHTML=mytext;
var mytext='aiueo';
j$("#hogehoge").html(mytext);
と書けますが、このとき
var mytext=0;
$('hogehoge').innerHTML=mytext; // 0 が表示される
j$("#hogehoge").html(mytext); // 何も表示されない
という違いがあるようなので注意!
prototype.js の便利な機能に
Form.serialize('フォームのid名前');
というのがありますが、これをテストしてみます。(↓添付ファイルをダウンロード後、prototype.jsを読み込ませて実行のこと)
実行してみてわかることは
<textarea name="text" rows="3" id="text_id">bbb
bbb
bbb
</textarea>
のところは
text=bbb%0Abbb%0Abbb%0A
という値が帰ってくるということ。調べたとろ
という事みたいです。
別ウィンドウの DOM document インターフェイスは
var parent_document = window.opener.document
とすると取得できます。(openerの document を取得)
JavaScriptでDOM操作を行うときはDOMツリーの完成を待ってから処理を行う必要があるため
window.onload を待って処理を行う必要があります。
しかし window.onload は全てのファイルの読み込み完了時に発生するイベントなので、DOMツリーの完成だけを待っている場合画像の読み込み等も待たなくてはならず、無駄が生じます。
そこでDOMツリーの完成を待つイベントを発生させるライブラリ domready.js ↓
[window.onload 前でも DOM 処理が可能なら通知してくれる domready.js - METAREAL](http://weblog.metareal.org/2007/07/10/domready-js-cross-browser-ondomcontentloaded/)
Event.domReady.add(function() {
alert('DOMツリーの読み込みが完了しました');
});
$(document).ready(function(){
alert('DOMツリーの読み込みが完了しました');
});
jQuery.event.add(window, "load", function(){
alert('全てのデータの読み込みが完了しました');
});
YAHOO.util.Event.onDOMReady( alert('DOMツリーの読み込みが完了しました') );
document.observe('contentloaded', function() {
alert('DOMツリーの読み込みが完了しました');
});
window.addEvent('domready', function() {
alert('DOMツリーの読み込みが完了しました');
});
https://github.com/janjarfalk/jquery-elastic
$(document).ready(function(){
// 読み込み時にリサイズ
$('textarea#my_text_area').elastic();
// クリック時にリサイズ
$('textarea#text_name').bind("click", function(){
$('textarea#text_name').elastic();
});
});
https://github.com/jackmoore/autosize
jQueryを使用したくない場合はこちら
// from a NodeList
autosize(document.querySelectorAll('textarea'));
// from a single Node
autosize(document.querySelector('textarea'));
// from a jQuery collection
autosize($('textarea'));
http://javascriptly.com/2008/09/quick-useful-jquery-plugins/ ダウンロード: http://github.com/jaz303/jquery-grab-bag/blob/master/javascripts/jquery.autogrow-textarea.js
$(document).ready(function(){
$('textarea#mytextarea').autogrow();
});
javascript 実行イベントを毎回 <onload="testfunc();">みたいに入力するのは面倒なので
prototype.js を使って登録する。
Event.observe(window, 'load', testfunc, false);
又は無名関数を使うとこのように書ける
Event.observe(window, 'load', function(){
alert('test');
});
書式は
Event.observe( 追加する要素 , イベント , 関数 , 段階 );
です。
■ 1. prototype.js を使います
id="test" な要素に プロパティを追加します。
Element.setStyle('test',
{
"font-size" : "x-small" ,
"line-height" : "20px"
});
■ 2. prototype を使わずに記述します。
http://bmky.net/text/note/javascript-css.html
■ ライブラリ bytefx を使用する
http://www.devpro.it/bytefx/
<script type="text/javascript" src="../js/lib/bytefx.js"></script>
objX = bytefx.$position(document.getElementById('ID名')).x;
objY = bytefx.$position(document.getElementById('ID名')).y;
で取得できます。便利。
■ prototype.js を使う。
1.6系
var offset = $('elementID').positionedOffset()
alert ( offset ); // offsetLeft, offsetTopが入った配列
1.5系
var off set = Position.positionedOffset()
alert ( offset ); // offsetLeft, offsetTopが入った配列
■ yui(Yahoo! User Interface Library)を使用する方法はこちら
http://www.openspc2.org/JavaScript/Ajax/Ajax_study/chapter81/013/index.html
yui を使うとかなり簡単に座標位置を取得できます。
<script src="js/yahoo.js" type="text/javascript"></script> <script src="js/event.js" type="text/javascript"></script> <script src="js/dom.js" type="text/javascript"></script>
でyuiライブラリを読み込んでおいて
position = YAHOO.util.Dom.getXY("myBox");
alert( position );
で取得できます。
ただし Windows版IE は top,left 共に2pxずつ多めに取得されてしまいますので、
ブラウザ判別をして 2px 引いてあげる必要があります。
また座標位置が正確に取得できないことも多々ありますので注意
参考:ghostbass1.4β - 要素の位置を取得する(正解?)
jQueryでは次のように記述します
// <input name="myform" type="radio" value="yes" />の値を取得
val = $("input:radio[name='myform']:checked").val();
prototype.js では選択されたラジオボタンの値を取得する方法がないみたい。。。
なので↓のようにする
// フォーム name="FM" ラジオボタン name="radio_flag" の値を取得する val = Form.serialize($(FM)).toQueryParams()['radio_flag'];
■ prototype.js を使わない方法
// ラジオボタン name="my_radio" の値を取得
function getRadio() {
var radioGroup = document.forms[0].my_radio;
for (i=0; i<radioGroup.length; i++) {
if (radioGroup[i].checked == true) {
return radioGroup[i].value
}
}
}