Jagar
asked on
Converting simple VB to JScript
Hello I have the following form in a VB Program
Total CP: <Textbox name="txtCP">
Total XP: <Textbox name="txtXP">
Silver: <Textbox name="txtSilver">
<CommandButton name="cmdCalculate">
Earned CP: <Textbox name="txtCPGot">
Earned XP: <Textbox name="txtXPGot">
What I want to do is recreate this form and it's functionality in an HTML Page. I've created the form with onclick="CPCalculate()" for the command button.
What I need is the following Visual Basic code converted into JavaScript code that will work on IE4 and Netscape4(if possible). This form will not make a round trip to the server just Calculate the answer on the client side.
Well here is the VB code for CPCalculate
Private Function FigureCPCost(ByVal Level as Integer, ByVal Which as Integer) as Integer
Dim Modifier as Integer
Select Case Level
Case 1: Modifier = 5
Case 2: Modifier = 10
end select
FigureCPCost = Modifier * Which
end function
Private sub CPCalculate()
Dim Total, CPCount, Level, Extra, Which
Dim CP, XP, Silver
if txtCP.text="" then txtCP.text = "0"
if txtXP.text="" then txtXP.text = "0"
if txtSilver.text="" then txtSilver.text = "0"
CP = txtCP.text
XP = txtXP.text
Silver = txtSilver.text
CPCount = 0
Total = CP + XP + Silver
Level = ((CP - 25) \ 10) + 1 'notice the \ for integer division
Extra = (CP - 25) mod 10
Which = 1
do while Total > FigureCPCost(Level, Which)
Total = Total - FigureCPCost(Level, Which)
CPCount = CPCount + 1
Which = Which + 1
if Extra + Which > 10 then
Level = Level + 1
Extra = 0
end if
Loop
txtCPGot = CPCount
txtXPGot = Total
end sub
Total CP: <Textbox name="txtCP">
Total XP: <Textbox name="txtXP">
Silver: <Textbox name="txtSilver">
<CommandButton name="cmdCalculate">
Earned CP: <Textbox name="txtCPGot">
Earned XP: <Textbox name="txtXPGot">
What I want to do is recreate this form and it's functionality in an HTML Page. I've created the form with onclick="CPCalculate()" for the command button.
What I need is the following Visual Basic code converted into JavaScript code that will work on IE4 and Netscape4(if possible). This form will not make a round trip to the server just Calculate the answer on the client side.
Well here is the VB code for CPCalculate
Private Function FigureCPCost(ByVal Level as Integer, ByVal Which as Integer) as Integer
Dim Modifier as Integer
Select Case Level
Case 1: Modifier = 5
Case 2: Modifier = 10
end select
FigureCPCost = Modifier * Which
end function
Private sub CPCalculate()
Dim Total, CPCount, Level, Extra, Which
Dim CP, XP, Silver
if txtCP.text="" then txtCP.text = "0"
if txtXP.text="" then txtXP.text = "0"
if txtSilver.text="" then txtSilver.text = "0"
CP = txtCP.text
XP = txtXP.text
Silver = txtSilver.text
CPCount = 0
Total = CP + XP + Silver
Level = ((CP - 25) \ 10) + 1 'notice the \ for integer division
Extra = (CP - 25) mod 10
Which = 1
do while Total > FigureCPCost(Level, Which)
Total = Total - FigureCPCost(Level, Which)
CPCount = CPCount + 1
Which = Which + 1
if Extra + Which > 10 then
Level = Level + 1
Extra = 0
end if
Loop
txtCPGot = CPCount
txtXPGot = Total
end sub
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
Alright I'm getting a syntax error missing ';' in line 36 char 47.
The error seems to be in the line
While(Total > FigureCPCost(Level, theWhich)){
The 47 Character is after the FigureCPCost call, but if I put a ; there then I get a missing ')' syntax error for the previous character same line. This is IE haven't tried it in Netscape yet.
The error seems to be in the line
While(Total > FigureCPCost(Level, theWhich)){
The 47 Character is after the FigureCPCost call, but if I put a ; there then I get a missing ')' syntax error for the previous character same line. This is IE haven't tried it in Netscape yet.
I do seem to have missed some sem-colons:
Level = (parseInt((CP - 25) / 10)) + 1 // notice the / + parseInt for integer division
Extra = (CP - 25) % 10
theWhich = 1
should be
Level = (parseInt((CP - 25) / 10)) + 1; // notice the / + parseInt for integer division
Extra = (CP - 25) % 10;
theWhich = 1;
Missing semicolons can give errors further down the script
The version I posted ran in MSIE 4.0 here without the change so I hope this helps anyway.
Please be advised that I have not looked at the logic of your script so it should be the same as it was. However if I run it with 4 digit numbers, it takes several seconds to calculate in both ie4 and ns4 so perhaps a warning to the user is in order and perhaps a check that he input is not to big?
Michel
Level = (parseInt((CP - 25) / 10)) + 1 // notice the / + parseInt for integer division
Extra = (CP - 25) % 10
theWhich = 1
should be
Level = (parseInt((CP - 25) / 10)) + 1; // notice the / + parseInt for integer division
Extra = (CP - 25) % 10;
theWhich = 1;
Missing semicolons can give errors further down the script
The version I posted ran in MSIE 4.0 here without the change so I hope this helps anyway.
Please be advised that I have not looked at the logic of your script so it should be the same as it was. However if I run it with 4 digit numbers, it takes several seconds to calculate in both ie4 and ns4 so perhaps a warning to the user is in order and perhaps a check that he input is not to big?
Michel
ASKER
Thanks I'll check this tomorrow at work.
That's not a problem with large number the absolute largest number would be two to thee digits.
Thank You for your help and like I said I'll check this tomorrow at work and then grade your answer.
That's not a problem with large number the absolute largest number would be two to thee digits.
Thank You for your help and like I said I'll check this tomorrow at work and then grade your answer.
ASKER
I must be missing something the following code is giving me the error missing ';' line 34 char 47
<script language="JavaScript"><!-- //cloak
function FigureCPCost(Level, theWhich) {
var Modifier=1;
if (level==1) Modifier = 5;
else if (level==2) Modifier = 10;
return Modifier * theWhich
}
function CPCalculate(theForm){
var Total, CPCount, Level, Extra, theWhich, CP, XP, Silver;
if (theForm.txtCP.value=="") theForm.txtCP.value=0;
if (theForm.txtXP.value=="") theForm.txtXP.value=0;
if (theForm.txtSilver.value=" ") theForm.txtSilver.value=0;
CP = theForm.txtCP.value;
XP = theForm.txtXP.value;
Silver = theForm.txtSilver.value;
CPCount=0;
Total = CP + XP + Silver;
Level = (parseInt((CP - 25)/10)) + 1;
Extra = (CP - 25) % 10;
theWhich = 1;
While(Total > FigureCPCost(Level, theWhich)){
Total = Total - FigureCPCost(Level, theWhich);'this is line 34
CPCount = CPCount + 1;
theWhich = theWhich + 1;
if (Extra + theWhich > 10){
level++;
Extra = 0;
}
}
theForm.txtCPGot.value = CPCount;
theForm.txtXPGot.value = Total
}
//uncloak --></script>
<script language="JavaScript"><!--
function FigureCPCost(Level, theWhich) {
var Modifier=1;
if (level==1) Modifier = 5;
else if (level==2) Modifier = 10;
return Modifier * theWhich
}
function CPCalculate(theForm){
var Total, CPCount, Level, Extra, theWhich, CP, XP, Silver;
if (theForm.txtCP.value=="") theForm.txtCP.value=0;
if (theForm.txtXP.value=="") theForm.txtXP.value=0;
if (theForm.txtSilver.value="
CP = theForm.txtCP.value;
XP = theForm.txtXP.value;
Silver = theForm.txtSilver.value;
CPCount=0;
Total = CP + XP + Silver;
Level = (parseInt((CP - 25)/10)) + 1;
Extra = (CP - 25) % 10;
theWhich = 1;
While(Total > FigureCPCost(Level, theWhich)){
Total = Total - FigureCPCost(Level, theWhich);'this is line 34
CPCount = CPCount + 1;
theWhich = theWhich + 1;
if (Extra + theWhich > 10){
level++;
Extra = 0;
}
}
theForm.txtCPGot.value = CPCount;
theForm.txtXPGot.value = Total
}
//uncloak --></script>
While should be while and // are javascript comments
I cannot see anything wrong and I get no errors in my version - are you sure there are no funny characters that sneaked in when pasting (and why is the While with upper case W????),
Sorry! Please give me a URL where I can try your version and I will look at it at work on Monday...
Michel
I cannot see anything wrong and I get no errors in my version - are you sure there are no funny characters that sneaked in when pasting (and why is the While with upper case W????),
Sorry! Please give me a URL where I can try your version and I will look at it at work on Monday...
Michel
ASKER
I have one more request. What I need to do is check print a msgbox during the loop. Something is not calculating right. In VBScript I would do
alert CPCount
what would I do in Javascript. I tried
Alert CPCount;
but got and error.
alert CPCount
what would I do in Javascript. I tried
Alert CPCount;
but got and error.
alert(CPCount);
Do you still get the other error?
Michel
Do you still get the other error?
Michel
ASKER
No The error was in the While and not while.
I actually had fixed all the missing ; as I typed. That's why I could not figure out what the error was.
Thank you for your help.
I actually had fixed all the missing ; as I typed. That's why I could not figure out what the error was.
Thank you for your help.
Anytime...
Michel
PS: The JavaScript manuals can be gotten at
http://developer.netscape.com/docs/manuals/communicator/jsref/index.htm
Michel
PS: The JavaScript manuals can be gotten at
http://developer.netscape.com/docs/manuals/communicator/jsref/index.htm
ASKER