• 締切済み

動的に変数だけを切り替える

<script> (function($) { $.ipop001 = function() { var wx, wy; // ウインドウの左上座標 // ウインドウの座標を画面中央にする。 wx = $(document).scrollLeft() + ($(window).width() - $('.ipop').outerWidth()) / 2; if (wx < 0) wx = 0; wy = $(document).scrollTop() + ($(window).height() - $('.ipop').outerHeight()) / 2; if (wy < 0) wy = 0; // ポップアップウインドウを表示する。 $('.ipop').css({top: wy, left: wx}).fadeIn(100); // 閉じるボタンを押したとき $('.ipop_close').click(function() {$('.ipop').fadeOut(100);}); // タイトルバーをドラッグしたとき $('.ipop_title').mousedown(function(e) { var mx = e.pageX; var my = e.pageY; $(document).on('mousemove.ipop', function(e) { wx += e.pageX - mx; wy += e.pageY - my; $('.ipop').css({top: wy, left: wx}); mx = e.pageX; my = e.pageY; return false; }).one('mouseup', function(e) { $(document).off('mousemove.ipop'); }); return false; }); } })(jQuery); (function($) { $.test = function() { var wx, wy; // ウインドウの左上座標 // ウインドウの座標を画面中央にする。 wx = $(document).scrollLeft() + ($(window).width() - $('.ipop').outerWidth()) / 2; if (wx < 0) wx = 0; wy = $(document).scrollTop() + ($(window).height() - $('.ipop').outerHeight()) / 2; if (wy < 0) wy = 0; // ポップアップウインドウを表示する。 $('.ipop').css({top: wy, left: wx}).fadeIn(100); // 閉じるボタンを押したとき $('.ipop_close').click(function() {$('.ipop').fadeOut(100);}); // タイトルバーをドラッグしたとき $('.ipop_title').mousedown(function(e) { var mx = e.pageX; var my = e.pageY; $(document).on('mousemove.ipop', function(e) { wx += e.pageX - mx; wy += e.pageY - my; $('.ipop').css({top: wy, left: wx}); mx = e.pageX; my = e.pageY; return false; }).one('mouseup', function(e) { $(document).off('mousemove.ipop'); }); return false; }); } })(jQuery); $(function() { $("a").click(function() { eval("$."+this.id+"();"); var text = this.id; $("#text").text(text); }); }); </script> 『$.ipop001 = function() { も『$.test = function() {』以降の中身一緒なのですが、クリックした時に変数の部分だけを切り替える方法はないのでしょうか。 仮にリンクが100個あったら変数が違う&中身が一緒のfunction()を100個文書かなければいけないのでご教示お願いします。

みんなの回答

  • t_ohta
  • ベストアンサー率38% (5083/13282)
回答No.2

引数で渡すようにするとか

回答No.1

連想配列で実装すれば良いのではないでしょうか?

関連するQ&A

  • インラインフレーム内の変数を親ページから呼び出す

    インラインフレーム内のマウス位置を↓のjavascriptコードで取得しているのですが、親ページのjavascriptの関数で使用したいです。どのようにインラインフレーム内の変数を親ページから呼び出して、利用すればよいのでしょうか? var x, y; window.addEventListener("DOMContentLoaded", function(){ window.document.onmousemove = function(e){ x = getMousePosition(e).x; } },false); function getMousePosition(e) { var obj = new Object(); if(e) { obj.x = e.pageX; obj.y = e.pageY; } else { obj.x = event.x + document.body.scrollLeft; obj.y = event.y + document.body.scrollTop; } return obj; }

  • jquery bindがとまらない

    jquery の bindを使い、以下のサイトを参考にしながら、実装を試みているのですが、unbindしてもとまらなくなってしまいました。 mousedown、mousemove、mouseup を使い、mousedownした時点のx座標と、mousemoveしている間のx座標の差を取り、mouseup時に移動距離を表示するというものをとりあえず作りたいのですが、mousemoveが永遠続いてしまい、mouseupしてもとまりません。 $('#main_body').mousedown(function(e){ now_x = e.pageX; alert(now_x); $(document).mousemove(function(e){ now_x2 = e.pageX; alert(now_x2); }) }).mouseup(function(){ alert("bbbb"); $(document).unbind("mousemove"); }); これですと、now_x2がずっと出続けてしまいます。。。 どうか、お力をお貸しください。 よろしくお願い致します。 参考サイト: http://weble.org/2011/03/08/jquery-floatingbox

  • javascriptで困っています

    スマホでタッチした場所の座標を取得しようとしているのですが、いろいろ調べて以下のように作ってみましたが、座標が取得できません。どこを直せばいいのか、教えていただきたく投稿させていただきました。よろしくお願いします。 <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"/> <meta name="viewport" content="width=320, user-scalable=no" /> <script type="text/javascript" charset="utf-8"> var touch_box = document.getElementById("box"); touch_box.addEventListener("touchstart", function(e){ document.getElementById("txt0").innerHTML = "スタート"; document.getElementById("txt1").innerHTML = e.pageX; document.getElementById("txt2").innerHTML = e.pageY; }, false); touch_box.addEventListener("touchmove", function(e){ document.getElementById("txt0").innerHTML = "ムーブ"; document.getElementById("txt1").innerHTML = e.pageX; document.getElementById("txt2").innerHTML = e.pageY; }, false); touch_box.addEventListener("touchend", function(e){ document.getElementById("txt0").innerHTML = "エンド"; document.getElementById("txt1").innerHTML = e.pageX; document.getElementById("txt2").innerHTML = e.pageY; }, false); </script> </head> <body> <div id="box"> <span id="txt0"></span><br /> X:<span id="txt1"></span>, Y:<span id="txt2"></span><br /> </div> </body> </html>

  • JQueryを使用して、画像をドラッグで拡大・縮小できるボタンを画像右

    JQueryを使用して、画像をドラッグで拡大・縮小できるボタンを画像右下に配置しようと考えています。 以下のようなコードを作成したのですが、firefox(3.6.3)だとmouseupによるmousemoveのunbindがうまくいかず、mousemoveが維持されます。 IE8、chrom、operaでは考えたとおりの動きをしますが、ときたまchromでfirefoxと同様の不具合がおきます。 どのようにコードを修正すればよいでしょうか? ------------------------ <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <style type="text/css"> <!-- div#frame1{ position : absolute; height : 360px; width : 240px; top : 0; left : 0; border : 5px solid #000FFF; } div#frame1 img#handle{ position : absolute; bottom : 0; right : 0; border : 5px solid #FFF000; } //--> </style> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script> <script type="text/javascript"> <!-- $(function(){ $("img#handle").mousedown(function(e){ $("#frame1") .data("mdownX" , e.clientX) .data("mdownY" , e.clientY); $(document).mousemove(function(e){ var width = parseInt($("div#frame1").css("width"),10); var height = parseInt($("div#frame1").css("height"),10); $("div#frame1").css({ width : width + (e.pageX - $("#frame1").data("mdownX")) + "px", height : height + (e.pageY - $("#frame1").data("mdownY")) + "px" }); $("#frame1") .data("mdownX" , e.pageX) .data("mdownY" , e.pageY); }); }); $(document).mouseup(function(){ $(document).unbind("mousemove"); }); }); //--> </script> <title>zoom</title> </head> <body> <div id="frame1"> <img id="handle" src="image.bmp" alt="画像"/> </div> </body> </html>

  • マウスストーカーについて

    こんばんは。 今自作しているホームページにマウスストーカーを付けたいと思いまして、 サンプルのあるサイトから以下のソースをコピペしました。 <HTML> <HEAD> <TITLE></TITLE> </HEAD> <BODY onLoad="ImageMove()"> <IMG id="img1" src="画像.gif" style="position:absolute; left:-30px; top:-30px;"> <SCRIPT type="text/javascript"> <!-- var ix=-30, iy=-30; var mx=0, my=0; document.onmousemove = MouseMove; function MouseMove() { mx=event.clientX; my=event.clientY; } function ImageMove() { ix=ix+(mx-ix)/20; iy=iy+(my-iy)/20; img1.style.left = ix + "px"; img1.style.top = iy + "px"; setTimeout("ImageMove()",10); } // --> </SCRIPT> </BODY> </HTML> JavaScriptについては勉強中でして、このソースに、画像がカーソルに近付いたときの距離を指定したいのですが、 どこにどういった指示を付け加えたらいいのかが判りません・・・。 このままだとカーソルにぴったり重なってしまうので、 カーソルの右側に画像がくる設定にしたいのです。 コレに Point = 50;//マウスから画像の距離設定 を付け加えても 変化がなかったのですが、私のやり方が悪かったのかもしれません。 どうか、ご教授のほどよろしくお願いしますm(__)m

  • つづきです・2

    先ほどの質問のプログラムです。 どうぞよろしくお願いいたします。 (*印はサイトアドレスまたはファイル名です。) <script tupe="text/javascript"> <!-- window.onerror=null function getMouseX(e){ if(document.layers)return e.pageX if(document.all) return document.body.scrollLeft+event.clientX } function getMouseY(e){ if(document.layers)return e.pageY if(document.all) return document.body.scrollLeft+event.clientY } function moveLAYER(layName,x,y){ if(document.layers)document.layers[layName].moveTo(x,y) //NN用 if(document.all)document.all(layName).style.pixelLeft=x //IE用 if(document.all)document.all(layName).style.pixelTop=y //IE用 } function setBGCOLOR(layName,color){ if(document.layers)document.layers[layName].bgColor=color if(document.all)document.all(layName).style.backgroundColor=color } var nn4=!!document.layers var ie4=!!document.all function showHELP(no,e){ var offsetx=1 var offsety=1 moveLAYER('helplay'+no,(getMouseX(e)+offsetx),(getMouseY(e)+offsety)) } function hideHELP(no,e){ moveLAYER('helplay'+no,-100,-3) } //--> </script> <STYLE TYPE="text/css"> <!-- A { font-family:Osaka,Arial;font-size:10pt } .helplay { position:absolute;top:-100;left:-3 <!----> </STYLE> </head> <body bgcolor="#969696" link="#3c3c3c" text="white"> (つづきます) 関連URL:http://oshiete1.goo.ne.jp/kotaeru.php3?q=453166

  • NN系でマウス座標取得

    お世話になります。 javascriptにてマウス座標を取得するファンクションを作成したいと 考えております。 そこで以下のソースでも取得可能だと思うのですが NN系でイベントが走らない場合でもマウス座標を 取得するファンクションを作成したいです。 すごく簡単なのかもしれませんが、ご教授宜しくお願い致します。 function getMouseY(e){  if(document.all) return document.body.scrollTop+event.clientY else if(document.layers||document.getElementById) return e.pageY }

  • javascriptエラーの解決策について

    かなりの初心者で他のサイトのソースを借りて改変しています。 どうしても「オブジェクトでサポートされていないプロパティまたはメソッドです」というエラーが消えません。 出来れば具体的な対応策をご教授いただけましたら幸いです。 var startX; var moveX; var diffX = 0; var link_value=''; var adstartY; var admoveY; $(function() { var box = $("#menu-ul")[0]; var touchHandler = getTouchHandler(); box.addEventListener("tmove", touchHandler, false); box.addEventListener("tcst", touchHandler, false); box.addEventListener("tchend", touchHandler, false); document.addEventListener("tmove", getTouchHandlerdoc(), false); document.addEventListener("tcst",getTouchHandlerdoc(), false); document.addEventListener("tchend", getTouchHandlerdoc(), false); $("#item0")[0].addEventListener("tcst", getTouchHandlera('0'), false); $("#item1")[0].addEventListener("tcst", getTouchHandlera('1'), false); $("#item2")[0].addEventListener("tcst", getTouchHandlera('2'), false); $("#item3")[0].addEventListener("tcst", getTouchHandlera('3'), false); $("#item4")[0].addEventListener("tcst", getTouchHandlera('4'), false); $("#item5")[0].addEventListener("tcst", getTouchHandlera('5'), false); $("#item6")[0].addEventListener("tcst", getTouchHandlera('6'), false); /* $("#item9")[0].addEventListener("tcst", getTouchHandlera('9'), false); */ $("#menu-prev-btn")[0].addEventListener("tcst", getTouchHandlerb('prev'), false); $("#menu-next-btn")[0].addEventListener("tcst", getTouchHandlerb('next'), false); $("#menu-prev-btn")[0].addEventListener("tchend", getTouchHandlerb('prev'), false); $("#menu-next-btn")[0].addEventListener("tchend", getTouchHandlerb('next'), false); }); function getTouchHandlerdoc() { return function(e) { if (e.type == "tcst") { $('#footer_ad').hide(); $('#footer_ad').stop(); adstartY = touch.pageY; } else if (e.type == "tmove") { admoveY = touch.pageY - adstartY; if ((admoveY < 20) && (admoveY > -20)){ $('#footer_ad').css('position','absolute'); $('#footer_ad').css('top',document.body.clientHeight + 'px'); } } else if (e.type == "tchend") { $('#footer_ad').show(); } }} function getTouchHandlerb(param) { return function(e) { e.preventDefault(); if (e.type == "tcst") { link_value = param; if(param == "prev"){ timer_prev(); }else if(link_value == "next"){ timer_next(); } } else if (e.type == "tchend") { } }} function getTouchHandlera(param) { return function(e) { //e.preventDefault(); if (e.type == "tcst") { link_value = $('#item'+param+' a').attr('href'); } }} function getTouchHandler() { var sTime = 0; var moveX = 0; return function(e) { //e.preventDefault(); var touch = e.touches[0]; if (e.type == "tcst") { startX = touch.pageX; moveX = 0; startX = startX - diffX; sTime = (new Date()).getTime(); } else if (e.type == "tmove") { //e.preventDefault(); diffX = touch.pageX - startX; moveX = diffX; if (diffX > 0){ diffX = 0; } if (diffX < -320){ diffX = -320; } $("#menu-ul").css("left", diffX + "px"); //$("#menu-ul").animate({left:diffX + 'px'},10); } else if (e.type == "tchend") { //e.preventDefault(); var t = (new Date()).getTime() - sTime; if ((moveX < 10) && (moveX > -10)){ location.href=link_value; } } } } $(window).scroll(function () { var win = window.innerHeight; var offsettop = $("#page").offset().top; var offsettop = window.pageYOffset; var adposition = offsettop + win - 50; var adstartposition = offsettop + win + 60; $('#footer_ad').css('position','absolute'); $('#footer_ad').css('top',adstartposition); $("#footer_ad").animate({top:adposition + 'px'},500) }); window.onorientationchange = function() { var win_width = $(window).width(); $('#menu-frame').css('width',(win_width - 54) + 'px'); $('#menu-frame').css('overflow','hidden'); } $(document).ready(function () { var win_width = $(window).width(); $('#menu-frame').css('width'

  • 初心者なのですが教えてください。

    HTMLの中にJavaScriptを用いて 初めてプログラムを作ってみました。 ある画像があり、カーソルを動かすとx、y座標を表示させる プログラムを作りました。 今回これを改良したいのです。 画像の中に、人の絵がありまして、その人のところに カーソルを持っていくと画面にその人の名前が表示されるようにしたいです。 たとえばx、yの座標、共に(200、200)の所に その人物の中心があるとすれば、その前後±50ぐらいの範囲で この名前が表示されるようにしたいです。 まだまだ未熟で分からないことだらけなので、どなたか分かる方 ご指導ください。ヨロシクお願いします。 <html> <head> <title>情報収集</title> </head> <body> <script type="text/javascript"> window.document.onmousemove = getMouseXY; function getMouseXY(evt){ // x,yとpageX,Y if (window.createPopup){ x = event.x + document.body.scrollLeft; y = event.y + document.body.scrollTop; } else{ x = evt.pageX; y = evt.pageY; } document.getElementById("result1").innerHTML = "(x,y) = "+x + ", "+y; // offsetX,YとlayerX,Y if (document.all){ cx = event.offsetX; cy = event.offsetY; } else{ cx = evt.layerX; cy = evt.layerY; } document.getElementById("result2").innerHTML = "(offsetX,offsetY) = "+cx + ", "+cy; } </script> <IMG src="q600.jpg" name="img1"> <br> <div id="result1"></div> <div id="result2"></div> <script type="text/javascript"> function eve1(e){ window.status="[ 座標位置 ] : "+"( x , y ) = "+"( "+x+" , "+y+" )"; return true; } document.onmousedown = eve1; </script> <script type="text/javascript"> function openWindow1(){ window.open("serv.html","OpenWindow","screenX=20,screenY=50,left=20,top=50,width=160,height=240"); } document.ondblclick=openWindow1(); </script> </body> </html>

  • 初心者なのですが教えてください。

    HTMLで初めてプログラムを作ってみました。 ある画像があり、カーソルを動かすとx、y座標を表示させる プログラムを作りました。 今回これを改良したいのです。 画像の中に、人の絵がありまして、その人のところに カーソルを持っていくと画面にその人の名前が表示されるようにしたいです。 たとえばx、yの座標、共に(200、200)の所に その人物の中心があるとすれば、その前後±50ぐらいの範囲で この名前が表示されるようにしたいです。 まだまだ未熟で分からないことだらけなので、どなたか分かる方 ご指導ください。ヨロシクお願いします。 <html> <head> <title>情報収集</title> </head> <body> <script type="text/javascript"> window.document.onmousemove = getMouseXY; function getMouseXY(evt){ // x,yとpageX,Y if (window.createPopup){ x = event.x + document.body.scrollLeft; y = event.y + document.body.scrollTop; } else{ x = evt.pageX; y = evt.pageY; } document.getElementById("result1").innerHTML = "(x,y) = "+x + ", "+y; // offsetX,YとlayerX,Y if (document.all){ cx = event.offsetX; cy = event.offsetY; } else{ cx = evt.layerX; cy = evt.layerY; } document.getElementById("result2").innerHTML = "(offsetX,offsetY) = "+cx + ", "+cy; } </script> <IMG src="q600.jpg" name="img1"> <br> <div id="result1"></div> <div id="result2"></div> <script type="text/javascript"> function eve1(e){ window.status="[ 座標位置 ] : "+"( x , y ) = "+"( "+x+" , "+y+" )"; return true; } document.onmousedown = eve1; </script> <script type="text/javascript"> function openWindow1(){ window.open("serv.html","OpenWindow","screenX=20,screenY=50,left=20,top=50,width=160,height=240"); } document.ondblclick=openWindow1(); </script> </body> </html>

    • ベストアンサー
    • HTML

専門家に質問してみよう