要素の幅を測定する次の関数があります。
function distanceToCaret(textElement,caretIndex){
line = findLineViaCaret(textElement,caretIndex);
relativeIndex = caretIndex - line.startIndex;
textToCaret = line.text.substring(0, relativeIndex);
hiddenElement = textElement.clone(); //copies font settings and width
hiddenElement.empty();//clear text
hiddenElement.css("visibility", "hidden");
hiddenElement.css("width", "auto"); //so width can be measured
hiddenElement.css("display", "inline-block"); //so width can be measured
jQuery('body').append(hiddenElement); // height doesn't exist until inserted into document
hiddenElement.text(textToCaret); //add character to get height
width = hiddenElement.width();
hiddenElement.remove();
return width;
}
私はそれを次のように呼び出します:
distanceToCaret = distanceToCaret($(this), thisIndex);
この関数を初めて呼び出すと、「72」と返され、2回目に呼び出すとエラーが発生します。
TypeError: '72' is not a function (evaluating 'distanceToCaret($(this), thisIndex)')
実際、disctanceToCaret
呼び出す前に定義されている場合distanceToCaret = distanceToCaret();
、このエラーが発生します。なぜこうなった?