• ベストアンサー

関数化のやり方

function bold(){ if(document.all){ //IE var str=document.selection.createRange().text; if (str != "") { document.selection.createRange().text="<b>" + str + "</b>"; } else { document.form1.CBBE_TEXT.value += "<b></b>" } } else { //Firefox var el=document.getElementById('text'); var sPos = el.selectionStart; var ePos = el.selectionEnd; var str = el.value.substring(sPos, ePos); el.value = el.value.substring(0, sPos) + "<b>" + str + "</b>" + el.value.substr(ePos); } } function italic(){ if(document.all){ //IE var str=document.selection.createRange().text; if (str != "") { document.selection.createRange().text="<i>" + str + "</i>"; } else { document.form1.CBBE_TEXT.value += "<i></i>" } } else { //Firefox var el=document.getElementById('text'); var sPos = el.selectionStart; var ePos = el.selectionEnd; var str = el.value.substring(sPos, ePos); el.value = el.value.substring(0, sPos) + "<i>" + str + "</i>" + el.value.substr(ePos); } } を <input type="button" value="太字" onclick="bold()"> <input type="button" value="斜字" onclick="italic()"> で制御しています。 関数化できませんか?

質問者が選んだベストアンサー

  • ベストアンサー
  • kokorone
  • ベストアンサー率38% (417/1093)
回答No.3

<b></b>か、<i></i>を文字の前後に付加すればいいんですよね? <input type="button" value="太字" onclick="cnv('b')"> <input type="button" value="斜字" onclick="cnv('i')"> function cnv(var p1){ var ps,pe,pd; ps = "<"+p1+">"; pe = "</"+p1+">"; pd = ps+pe; if(document.all){ //IE var str=document.selection.createRange().text; if (str != "") { document.selection.createRange().text=ps + str + pe; } else { document.form1.CBBE_TEXT.value += pd; } } else { //Firefox var el=document.getElementById('text'); var sPos = el.selectionStart; var ePos = el.selectionEnd; var str = el.value.substring(sPos, ePos); el.value = el.value.substring(0, sPos) + ps + str + pe + el.value.substr(ePos); } } でいかがでしょうか? <<マルチポスト先に回答した内容ですが、これ以降の回答は、削除されて記録にないため、省略します。>>

その他の回答 (2)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

つまり、 bold() とitalic() は、内容が<i></i> が<b></b>だけの違いなので 1つにできないかということだと思いますが 例えば deco("i") のように呼び出して function deco( k ) のように受けるとすると ="<i>" + str + "</i>"; のような部分は ="<" + k + ">" + str + "</" + k + ">"; のように一般化できます。

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

>関数化できませんか? 関数化とは具体的にどのような状態を さしていますか? すでに関数にみえますが・・。

eccschool
質問者

補足

上の2つの関数をまとめたいんです。1つの関数にしたいです。

関連するQ&A

  • textareaの選択された文字列の取得

    HTMLエディタを作ろうとしています。 textAreaの選択された文字列の開始桁数・終了桁数を取得するにはどのようにすればよいのでしょうか? var selected_text; if (document.getSelection) // Moz { selected_text = document.getSelection(); } else if (document.selection && document.selection.createRange) // IE { rng = document.selection.createRange(); selected_text = rng.text; } alert(selected_text); これで、選択された内容は取得できたのですが、初めと終了の桁数が取れていません。 クロスブラウザに対応したく、IE6以上、FF3、Opera9.5、Safari3.1、Choromeにて動作を確認したいのですが、お分かりになる方いましたら、よろしくお願いします。

  • カーソル位置に文字を挿入

    カーソル位置に文字を挿入しようとしているのですが、どうもうまく行きません。 コードは以下なのですが、FireFox 等ではうまくいきますが、IE ではうまくいきません。どこが間違っているのでしょうか。よろしくお願いいたします。 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html lang="ja"> <head>  <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">  <title></title> <script type="text/javascript"> //@cc_on (function(){  document./*@if(1) attachEvent('on'+ @else@*/ addEventListener( /*@end@*/ 'click', function( evt ) {   var t = evt./*@if(1) srcElement @else@*/ target /*@end@*/;      if ( t.tagName == 'BUTTON' && /(^| )ContributionForm( |$)/.test( t.form.className ) ) {    var content = t.form.elements['content'];        /*@if(1)     var r = document.selection.createRange();     var c = r.duplicate();     c.moveToElementText(content);     c.setEndPoint('EndToEnd', r);     var pos = c.text.length;    @else@*/     var pos = content.selectionStart;    /*@end@*/    var moji_1 = content.value.substring( 0, pos );    var moji_2 = content.value.substring( pos, content.value.length );    content.value = moji_1 + t.value + moji_2;       }     }, false ); })(); </script> </head> <body>  <form action="#" class="ContributionForm" id="form" name="form">   <div>     <button type="button" value="test">ボタン</button>    <textarea name="content"></textarea>   </div>  </form> </body> </html>

  • AJAXの計算式の中にIF文を入れて表示したい

    下記の2つのファイルで、フォームから入力した数値同士の「足し算の結果」をAJAXで表示できます。 ******************************************** 【HTMLフォーム】 <script language="JavaScript" type="text/javascript" src="js/culc.js"></script> <form name="f1"> <input type="text" id="text1" name="text1" size="10" maxlength="10" /> + <input type="text" id="text2" name="text2" size="10" maxlength="10" /> <input type="button" value="足す" onclick="readText()" /> </form> <p id="message"></p> ******************************************* 【JAVASCRIPT(culc.js)】 function readText() { var text1 = document.getElementById("text1"); var text2 = document.getElementById("text2"); var message = document.getElementById("message"); var str_val1 = text1.value; var str_val2 = text2.value; var sum; if (isNaN(str_val1) || str_val1 == "" || isNaN(str_val2) || str_val2 == "") { textMessage = "数値以外の文字が入っています"; } else { //sum = str_val1 + str_val2; sum = parseFloat(str_val1) + parseFloat(str_val2); textMessage = "合計は、" + sum + "です"; } message.innerHTML = textMessage; } ************************************************ 【質問】 このjavascriptを改造し、入力した数値についての「足し算の結果」が正の数だった場合には「正の数」、負の数だった場合は「負の数」と表示すべく改造しております。下記の改造を施したのですが、うまく表示されません。 下記の文のどこが誤りか修正頂けませんでしょうか? 宜しくお願い致します。 【JAVASCRIPT(culc2.js)】 function readText() { var text1 = document.getElementById("text1"); var text2 = document.getElementById("text2"); var message = document.getElementById("message"); var str_val1 = text1.value; var str_val2 = text2.value; var sum; if (isNaN(str_val1) || str_val1 == "" || isNaN(str_val2) || str_val2 == "") { textMessage = "数値以外の文字が入っています"; } else { //sum = str_val1 + str_val2; sum = parseFloat(str_val1) + parseFloat(str_val2); textMessage = "(if((sum > 0) { document.write("正の数"); } else((sum <= 0) { document.write("負の数"); } ))"; } message.innerHTML = textMessage; }

    • ベストアンサー
    • AJAX
  • JavaScriptの計算のNaNの判定について…

    いろいろなアドバイスを参考に以下のようなプログラムを作り、値が正の時はちゃんと計算されるのですが負の時はNaNと判定されてしまいます。どうしたら負の場合でもちゃんと計算されますか?いろいろ調べたのですが見つかりませんでした…。よろしくお願いします。 <html> <body> <script type="text/javascript"> var rslt1 = 0; var rslt2 = 0; var rslt3 = 0; function hoge1(){ var a=document.getElementById('a').value; var b=document.getElementById('b').value; var rslt; if (a==1 && b==1) { rslt1=-100; } else { if (a==1 && b==2) { rslt1=-90; } else { if (a==2 && b==1) { rslt1=-80; } else { rslt1=-70; }}} document.getElementById('txt1').value=rslt1; sum1(); } function hoge2(){ var a=document.getElementById('a').value; var c=document.getElementById('c').value; var rslt; if (a==1 && c==1) { rslt2=-95; } else { if (a==1 && c==2) { rslt2=-85; } else { if (a==2 && c==1) { rslt2=-75; } else { rslt2=-65; }}} document.getElementById('txt2').value=rslt2; sum1(); sum2(); } function hoge3(){ var a=document.getElementById('a').value; var d=document.getElementById('d').value; var rslt; if (a==1 && d==1) { rslt3=-60; } else { if (a==1 && d==2) { rslt3=-50; } else { if (a==2 && d==1) { rslt3=-40; } else { rslt3=-30; }}} document.getElementById('txt3').value=rslt3; sum2(); } function sum1() { document.getElementById('txt4').value=rslt1 + rslt2; } function sum2() { document.getElementById('txt5').value=rslt2 + rslt3; } function sum3() { document.getElementById('txt6').value=((document.getElementById('txt4').value + rslt2 + document.getElementById('txt5').value * 2) / 4); } </script> <select id="a" onChange="hoge1()"> <option value="1">1<option value="2">2 </select>   <select id="b" onChange="hoge1()"> <option value="1">1<option value="2">2 </select>   <select id="c" onChange="hoge2()"> <option value="1">1<option value="2">2 </select> <select id="d" onChange="hoge3()"> <option value="1">1<option value="2">2 </select><p> <input type="text" id="txt1" value=""><p> <input type="text" id="txt2" value=""><p> <input type="text" id="txt3" value=""><p> <input type="text" id="txt4" value=""><p> <input type="text" id="txt5" value=""><p> <input type="text" id="txt6" value=""><p> </body> </html>

  • javaの計算に関する質問です。

    以下のプログラムで、画像の矢印のように処理ができたのですが、(4)と(5)の計算値などを用いて更に計算をするにはどう記述すればよいのですか?できれば画像の赤○で囲ったような感じで四則演算したいのですが…よろしくお願いします。 <html> <body> <script type="text/javascript"> var rslt1 = 0; var rslt2 = 0; var rslt3 = 0; function hoge1(){ var a=document.getElementById('a').value; var b=document.getElementById('b').value; var rslt; if (a==1 && b==1) { rslt1=100; } else { if (a==1 && b==2) { rslt1=90; } else { if (a==2 && b==1) { rslt1=80; } else { rslt1=70; }}} document.getElementById('txt1').value=rslt1; sum1(); } function hoge2(){ var a=document.getElementById('a').value; var c=document.getElementById('c').value; var rslt; if (a==1 && c==1) { rslt2=95; } else { if (a==1 && c==2) { rslt2=85; } else { if (a==2 && c==1) { rslt2=75; } else { rslt2=65; }}} document.getElementById('txt2').value=rslt2; sum1(); sum2(); } function hoge3(){ var a=document.getElementById('a').value; var d=document.getElementById('d').value; var rslt; if (a==1 && d==1) { rslt3=60; } else { if (a==1 && d==2) { rslt3=50; } else { if (a==2 && d==1) { rslt3=40; } else { rslt3=30; }}} document.getElementById('txt3').value=rslt3; sum2(); } function sum1() { document.getElementById('txt4').value=rslt1 + rslt2; } function sum2() { document.getElementById('txt5').value=rslt2 + rslt3; } </script> <select id="a" onChange="hoge1()"> <option value="1">1<option value="2">2 </select>   <select id="b" onChange="hoge1()"> <option value="1">1<option value="2">2 </select>   <select id="c" onChange="hoge2()"> <option value="1">1<option value="2">2 </select> <select id="d" onChange="hoge3()"> <option value="1">1<option value="2">2 </select><p> <input type="text" id="txt1" value=""><p> <input type="text" id="txt2" value=""><p> <input type="text" id="txt3" value=""><p> <input type="text" id="txt4" value=""><p> <input type="text" id="txt5" value=""><p> </body> </html>

    • ベストアンサー
    • Java
  • 正規表現をまとめることってできますか?

    正規表現をまとめるにはどうしたらよいでしょうか? var str = document.forms[0].school_list.value; if (str == "") return; var result = ""; for (var i = 0; i < str.length; i++) result = str.replace(/,/g,'\n'); document.forms[0].result_school_list.value = result; document.forms[0].result_school_list.select(); var str = document.forms[0].result_school_list.value; if (str == "") return; var result = ""; for (var i = 0; i < str.length; i++) result = str.replace(/、/g,'\n'); document.forms[0].result_school_list.value = result; document.forms[0].result_school_list.select();

  • 同じようなのばかりだ申し訳ないのですが…javaに関してです。

    以下のようなプログラムを作成しました。3つのスクリプトを動作させたいのですがどうすればよいですか?また,画像のように(1)~(3)の和を算出するにはどうすればいいですか?助けて下さい。お願いします。 <html> <script type="text/javascript"> function hoge(){ var v1=document.getElementById('s1').value; var v2=document.getElementById('s2').value; var rslt; if (v1==1 && v2==1){ rslt=50; } else { if (v1==1 && v2==2) { rslt=47; } else { if (v1==2 && v2==1) { rslt=30; } else { rslt=20; }}} document.getElementById('txt1').value=rslt; } </script> <script type="text/javascript"> function hoge(){ var v1=document.getElementById('s1').value; var v3=document.getElementById('s3').value; var rslt; if (v1==1 && v3==1){ rslt=40; } else { if (v1==1 && v3==2) { rslt=80; } else { if (v1==2 && v3==1) { rslt=70; } else { rslt=10; }}} document.getElementById('txt2').value=rslt; } </script> <script type="text/javascript"> function hoge(){ var v1=document.getElementById('s1').value; var v4=document.getElementById('s4').value; var rslt; if (v1==1 && v4==1){ rslt=83; } else { if (v1==1 && v4==2) { rslt=53; } else { if (v1==2 && v4==1) { rslt=33; } else { rslt=13; }}} document.getElementById('txt3').value=rslt; } </script> <body> <select id="s1" onChange="hoge()"> <option value="1">1<option value="2">2 </select>   <select id="s2" onChange="hoge()"> <option value="1">1<option value="2">2 </select>   <select id="s3" onChange="hoge()"> <option value="1">1<option value="2">2 </select> <select id="s4" onChange="hoge()"> <option value="1">1<option value="2">2 </select><p> <input type="text" id="txt1" value=""><p> <input type="text" id="txt2" value=""><p> <input type="text" id="txt3" value=""> </body> </html>

    • ベストアンサー
    • Java
  • 【Android】WebViewのテキスト選択

    アプリ開発を行っているものです。 WebViewでテキスト選択した文字列を色を変えたりなど、色々操作したいと考えています。 JavaScriptを呼び出し、document.selectionなどを使用して操作しようとしています。 JavaScripの呼出まではできているのですが、選択文字列が全く取れません・・・ 下記がAndroid側とJavaScriptです。 WebViewのテキスト選択は長押しで出てくる標準機能で選択状態にしています。 <andoriod> ボタンを押下すると下記を呼び出す mWebView.loadUrl("javascript: test()"); <Javascript> function test() { var str=(document.all)?document.selection.createRange().text:(window.getSelection()+''); if(str!=''){ document.body.innerHTML=document.body.innerHTML.replace(str,'<font color="black" style="background:#ffff00;padding:5;">'+str+'</font>'); } else { str = 'sample' } Log.i("selected str",str); } 上記のプログラムでJavaScriptをPCのブラウザ(IEなど)で試すと選択文字列の色が変わります。 現状では、ログをみると選択文字列が取れてません(sampleという文字列が表示されているので) 何か方法があれば教えてください。 よろしくお願いいたします。

  • jsの変換プログラムで、泉ケ丘のケをgaに変換

    https://hebonshiki-henkan.info/ 上のhpをもとにして作っています。 例えば、ひらがなのあや、カタカナのアは、aと認識します。 以下のjs文のままだと、新たに、深井→FUKAIと設定した場合はプログラムは正常に動くのですが、 泉ケ丘と、カタカナのケを使った場合、単体のケと認識されて、 keと入力されてしまいます。 これをgaと認識させるには、どのようなプログラムにすればいいのでしょうか。 以下はjs文です。 function ToHebon(){var map={"あ":"a","い":"i","う":"u","え":"e","お":"o", "か":"ka","き":"ki","く":"ku","け":"ke","こ":"ko", "さ":"sa","し":"shi","す":"su","せ":"se","そ":"so", "深井":"FUKAI", "泉ケ丘":"IZUMIGAOKA", "ー":"" }; var temp_data="";var temp_data2="";var temp_data3="";var temp_data4="";var temp_data5="";var temp_data6=""; var temp_data7="";var temp_data8="";var temp_data9="";var temp_data10="";var roma_data=""; var result_data="";source_data=document.form1.input_text.value; for(i=0;i<source_data.length;i=i+1) {temp_data=source_data.substring(i,i+1); temp_data2=source_data.substring(i,i+2); if(map[temp_data2]===undefined){ if(map[temp_data]===undefined) {roma_data=roma_data+temp_data} else{roma_data=roma_data+map[temp_data]}} else{i=i+1;roma_data=roma_data+map[temp_data2]}} for(i=0;i<roma_data.length;i=i+1){ temp_data=roma_data.substring(i,i+1); temp_data2=roma_data.substring(i,i+2); temp_data3=roma_data.substring(i,i+3); temp_data4=roma_data.substring(i,i+4); temp_data5=roma_data.substring(i,i+5); temp_data6=roma_data.substring(i,i+6); temp_data6=roma_data.substring(i,i+7); temp_data6=roma_data.substring(i,i+8); temp_data6=roma_data.substring(i,i+9); temp_data6=roma_data.substring(i,i+10); sub_str2=temp_data2.substring(1,2); if(temp_data4=="noue"){i=i+3;temp_data="noue"} else if(temp_data6=="touchi"){i=i+5;temp_data="touchi"} else{if(temp_data2=="uu"||temp_data2=="ee"||temp_data2=="ou"||temp_data2=="oo"){i=i+1} else if(temp_data2=="nb"||temp_data2=="nm"||temp_data2=="np"){temp_data="m"} else if(temp_data=="っ"||temp_data=="ッ"){if(temp_data3=="っch"||temp_data3=="ッch"){temp_data="t"} else if(sub_str2.match(/[a-z]/gi)){temp_data=sub_str2}else{temp_data="tsu"}}}result_data=result_data+temp_data} if(document.form1.uplow[0].checke

  • ラジオボタンの値を取得する引数付き関数を作りたい

    フォームの入力内容をチェックするJAVASCRIPTの関数を作成していますが、ラジオボタンのValueを取得することができません。 引数指定の関数を作成して汎用的に使用したいと考えているのですが、引数を渡すと値を返してくれません。 引数の渡し方がおかしいのでしょうか? function getRadioValue(str){ // 値を取得する関数 var check, num, value="none"; num=document.form1.str.length; for (i=0;i<num;i++) { check=document.form1.str[i].checked; if (check) value=document.form1.str[i].value; } return value; } function check(){ // 入力内容をチェックする if (getRadioValue("タイプ") == "A"){ hogehoge } : : }