Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/433.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用charCodeAt将javascript函数转换为Coldfusion?_Javascript_Coldfusion_Character Encoding - Fatal编程技术网

如何使用charCodeAt将javascript函数转换为Coldfusion?

如何使用charCodeAt将javascript函数转换为Coldfusion?,javascript,coldfusion,character-encoding,Javascript,Coldfusion,Character Encoding,我有一个javascript函数,需要使用Coldfusion8运行服务器端 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 - (c

我有一个javascript函数,需要使用Coldfusion8运行服务器端

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>

var checkValue=1234567891231;
var done=“”;
检查=检查+(ASC(中间(检查值,#i#,1))-48)*3;
检查=检查+ASC(中间值(检查值,(#i#-1),1))-48;
//错误处理程序
值传递正确,但我的ASC(MID())产生错误,我还没有发现我做错了什么

谁能给我一个指针吗

谢谢

编辑:更新的CF循环参数

EDIT2:将其固定到第二个mid函数,在最后一次循环迭代中得到1-1=0。

我不太理解这里的算法,但错误是因为您正在执行
mid(string,0,1)
——这是字符串开头之前的一个字符,因此不起作用。(JS从零开始索引字符串,CF从一开始索引。)

简单解决方案:

<cfloop from="11" to="1" index="i" step="-2">
    <cfset check += mid(checkValue,i,1) * 3 />
</cfloop>
<cfloop from="10" to="2" index="i" step="-2">
    <cfset check += mid(checkValue,i,1) />
</cfloop>


由于值已经是数字(如果可能不是,请在此步骤之前验证输入),而且也没有不必要的哈希。

刚刚发现了这一点。加上我现在也没有10%3=1,只是做了10/3。