入力フィールドに文字を入力するたびに、式を解析して次のようにします。
- トークンの配列、つまり、tokenArray = [2、*、COS、(、4、)]
- 対応するトークンタイプの配列、つまり、tokenType = [NUMBER、OPERATOR、FUNCTION、(、NUMBER、)]
それぞれのトークンタイプに基づいて、各トークンのスタイルを設定する必要があります(たとえば、各トークンに異なる色を割り当てる)。
<div>
次のように、入力テキストの動的コピーを別のスタイル(入力テキスト自体ではなく、私が助けを求めているもの)で簡単にスタイリングすることができました。
JavaScript:
function processExpression() {
var userInput = document.getElementById('inputText').value;
var resultOutput = parse(userInput); //this generates the two arrays described above
for (i in tokenArray)
newHTML += "<span style='color: " + colorMap[ tokenType[i] ] + " '>" + tokenArray[i] + "</span>";
document.getElementById('styledExpression').innerHTML = newHTML;
}
HTML:
<input type="text" id="inputText" value="" placeholder="Type expression" size="40"
onKeyDown="processExpression();"
onKeyUp="processExpression();"/>
<div id="styledExpression" value=""></div>
入力した入力フィールドに入力テキストを直接スタイル設定するにはどうすればよいですか?JavaScriptソリューションはありますか?
アップデート
contenteditable divのinnerHTMLを置き換えるという質問に対するTimの回答は、いくつかの良い助けになります。
http://jsfiddle.net/2rTA5/2/をどのように変更して、キーを押すたびに編集可能なもの全体を再解析する場合を解決しますか?たとえば、「= if(AND(3 = 2、A1:A4、OR(0,1))、5,6)」と入力すると、キーを押すたびに、編集可能なものがプログラムで書き直されます(上記のトークンの説明を参照)。 )そして私はカーソルを失います。
このソリューションは、トークン、文字、またはノードのタイプを無視し、キーダウンの前にあった絶対カーソル(の先頭から)の位置を単純に保存および復元するにはどうすればよいですか?