Coldfusion8 を使用してサーバー側で実行する必要がある JavaScript 関数があります。
javascript 関数は charCodeAt を使用して、入力された値 (ILN、13 桁の値、たとえば 1234567891231) をチェックし、checkVal を計算します。
checker=0;
for (i=11; i>0; i=i-2){
checker += (iln.charCodeAt(i)-48)*3;
checker += iln.charCodeAt(i-1)-48;
}
checkVal = 10 - (checker%10);
if(checkVal==10){
checkVal=0;
}
if(checkVal != iln.charAt(12)){
alert("error, should be" + checkVal);
}
Coldfusion では、mid() と asc() のループを使用してこれを実行しようとしていますが、うまくいきません。ここに私が持っているものがあります:
<cscript>
var checkValue = 1234567891231;
var done = "";
</cscript>
<cfloop from="11" to="1" index="i" step="-2">
<cfscript>
check = check + (ASC(MID(checkValue,#i#,1))-48)*3;
check = check + ASC(MID(checkValue,(#i#-1),1))-48;
</cfscript>
</cfloop>
<cfset done = 10 - check/10>
<cfif done EQ 10><cfset done = 0></cfif>
<cfif done NEQ mid(checkValue,12,1)>
<cfscript>
// error handler
</cfscript>
</cfif>
値は正しく渡されますが、ASC(MID()) でエラーが発生し、何が間違っているのかわかりません。
誰かが私にポインタを与えることができますか?
ありがとう!
EDIT : CF ループ パラメーターを更新
しました。