• ベストアンサー

関数化のやり方

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つの関数にしたいです。