/    Sign up×
Community /Pin to ProfileBookmark

Battle engine…function not working

I’m making an online battle engine that will eventually be graphical but right now I am just making the text version of it to get it to work. When I choose to attack, the value of the enemies health doesn’t go down. Here’s my code:

[code=html]
<html>
<head>
</head>
<body>
<table><tr><td><form name=”player”>
Name <input type=”text” size=”20″ name=”name”><br>
Element <input type=”text” size=”20″ name=”element”><br>
Level <input type=”text” size=”20″ name=”level”><br><br>
Health <input type=”text” size=”20″ name=”health”><br>
Magic <input type=”text” size=”20″ name=”magic”><br>
Speed <input type=”text” size=”20″ name=”speed”><br>
Attack <input type=”text” size=”20″ name=”attack”><br>
Defense <input type=”text” size=”20″ name=”defense”><br>
</form></td><td><form name=”enemy”>
Name <input type=”text” size=”20″ name=”name”><br>
Element <input type=”text” size=”20″ name=”element”><br>
Level <input type=”text” size=”20″ name=”level”><br><br>
Health <input type=”text” size=”20″ name=”health”><br>
Magic <input type=”text” size=”20″ name=”magic”><br>
Speed <input type=”text” size=”20″ name=”speed”><br>
Attack <input type=”text” size=”20″ name=”attack”><br>
Defense <input type=”text” size=”20″ name=”defense”><br>
</td></tr></table>

<script>
var name=”Brian”
document.player.name.value=name
var element=”Fire”
document.player.element.value=element
var level=25
document.player.level.value=level
var health=500
document.player.health.value=health
var magic=250
document.player.magic.value=magic
var speed=100
document.player.speed.value=speed
var attack=125
document.player.attack.value=attack
var defense=115
document.player.defense.value=defense
var name1=”Enemy”
document.enemy.name.value=name1
var element1=”Water”
document.enemy.element.value=element1
var level1=23
document.enemy.level.value=level1
var health1=465
document.enemy.health.value=health1
var magic1=285
document.enemy.magic.value=magic1
var speed1=85
document.enemy.speed.value=speed1
var attack1=105
document.enemy.attack.value=attack1
var defense1=100
document.enemy.defense.value=defense1
</script>
<input type=”button” value=”Attack” onclick=”attack()”>
<input type=”button” value=”Defend” onclick=”defend()”>
<input type=”button” value=”Fireball” onclick=”fireball()”>
<input type=”button” value=”Lightning” onclick=”lightning()”>
<input type=”button” value=”Heal” onclick=”heal()”>
<script type=”text/javascript”>
function attack()
{
var health1=health1-10
document.enemy.health.value=health1
}
</script>

</body></html>
[/code]

It gives me an error that ‘Object doesn’t suppor that property or method’ on Line 64. I can’t figure out why it doesn’t work. Can you help.

to post a comment
JavaScript

5 Comments(s)

Copy linkTweet thisAlerts:
@konithomimoJan 28.2006 — You have to put your function isnde the same script tag as the variable that you are trying to call. Your function is creating health1, and assigning it to itself-10, but it doesnt have an initial value inside of the script tags. Take all of your script and place it together inside of your header tags. Then remove var from:

var health1=health1-10;

Then you have to put the initial values in the input tags and not in yoru script.

That will fix it.
&lt;html&gt;
&lt;head&gt;
&lt;script type="text/javascript"&gt;
var name=document.player.name.value;
var element=document.player.element.value;
var level=document.player.level.value;
var health=document.player.health.value;
var magic=document.player.magic.value;
var speed=document.player.speed.value;
var attack=document.player.attack.value;
var defense=document.player.defense.value;
var name1=document.enemy.name.value;
var element1=document.enemy.element.value;
var level1=document.enemy.level.value;
var health1=document.enemy.health.value;
var magic1=document.enemy.magic.value;
var speed1=document.enemy.speed.value;
var attack1=document.enemy.attack.value;
var defense1=document.enemy.defense.value;
function attack()
{
document.enemy.health.value=parseInt(health1)-10;
}
&lt;/script&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;table&gt;&lt;tr&gt;&lt;td&gt;&lt;form name="player"&gt;
Name &lt;input type="text" size="20" name="name" value="Brian"&gt;&lt;br&gt;
Element &lt;input type="text" size="20" name="element" value="Fire"&gt;&lt;br&gt;
Level &lt;input type="text" size="20" name="level" value="25"&gt;&lt;br&gt;&lt;br&gt;
Health &lt;input type="text" size="20" name="health" value="500"&gt;&lt;br&gt;
Magic &lt;input type="text" size="20" name="magic" value="250"&gt;&lt;br&gt;
Speed &lt;input type="text" size="20" name="speed" value="100"&gt;&lt;br&gt;
Attack &lt;input type="text" size="20" name="attack" value="125"&gt;&lt;br&gt;
Defense &lt;input type="text" size="20" name="defense" value="115"&gt;&lt;br&gt;
&lt;/form&gt;&lt;/td&gt;&lt;td&gt;&lt;form name="enemy"&gt;
Name &lt;input type="text" size="20" name="name" value="Enemy"&gt;&lt;br&gt;
Element &lt;input type="text" size="20" name="element" value="Water"&gt;&lt;br&gt;
Level &lt;input type="text" size="20" name="level" value="23"&gt;&lt;br&gt;&lt;br&gt;
Health &lt;input type="text" size="20" name="health" value="465"&gt;&lt;br&gt;
Magic &lt;input type="text" size="20" name="magic" value="285"&gt;&lt;br&gt;
Speed &lt;input type="text" size="20" name="speed" value="85"&gt;&lt;br&gt;
Attack &lt;input type="text" size="20" name="attack" value="105"&gt;&lt;br&gt;
Defense &lt;input type="text" size="20" name="defense" value="100"&gt;&lt;br&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;input type="button" value="Attack" onclick="attack()"&gt;
&lt;input type="button" value="Defend" onclick="defend()"&gt;
&lt;input type="button" value="Fireball" onclick="fireball()"&gt;
&lt;input type="button" value="Lightning" onclick="lightning()"&gt;
&lt;input type="button" value="Heal" onclick="heal()"&gt;
&lt;/body&gt;&lt;/html&gt;
Copy linkTweet thisAlerts:
@tenniskid493authorJan 28.2006 — Now it gives me two errors:

document.player.name is null or not an object

-and-

Object doesn't support that property or method on Line 51

Thanks anyways
Copy linkTweet thisAlerts:
@konithomimoJan 29.2006 — The reason for that is because you are not coding properly. you are trying to do things like:

name="name"

name is preassigned in JS. Don't use that as a value for an attribute.

Also, use IDs instead of names. They make things a lot easier.
&lt;html&gt;
&lt;head&gt;
&lt;script type="text/javascript"&gt;
function doOne(ins)
{
var n=document.getElementById('n');
var e=document.getElementById('e');
var l=document.getElementById('l');
var h=document.getElementById('h');
var m=document.getElementById('m');
var s=document.getElementById('s');
var a=document.getElementById('a');
var d=document.getElementById('d');
var n1=document.getElementById('n1');
var e1=document.getElementById('e1');
var l1=document.getElementById('l1');
var h1=document.getElementById('h1');
var m1=document.getElementById('m1');
var s1=document.getElementById('s1');
var a1=document.getElementById('a1');
var d1=document.getElementById('d1');

if(ins == 'attack')
{
var health = parseInt(h1.value)-10;
h1.value = health;
}
if (ins == 'defend')
{
//insert your code here
}
if (ins == 'fireball')
{
//insert your code here
}
if (ins == 'lightning')
{
//insert your code here
}
if (ins == 'heal')
{
//insert your code here
}

}
&lt;/script&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;table&gt;&lt;tr&gt;&lt;td&gt;&lt;form id="player"&gt;
Name &lt;input type="text" size="20" id="n" value="Brian"&gt;&lt;br&gt;
Element &lt;input type="text" size="20" id="e" value="Fire"&gt;&lt;br&gt;
Level &lt;input type="text" size="20" id="l" value="25"&gt;&lt;br&gt;&lt;br&gt;
Health &lt;input type="text" size="20" id="h" value="500"&gt;&lt;br&gt;
Magic &lt;input type="text" size="20" id="m" value="250"&gt;&lt;br&gt;
Speed &lt;input type="text" size="20" id="s" value="100"&gt;&lt;br&gt;
Attack &lt;input type="text" size="20" id="a" value="125"&gt;&lt;br&gt;
Defense &lt;input type="text" size="20" id="d" value="115"&gt;&lt;br&gt;
&lt;/form&gt;&lt;/td&gt;&lt;td&gt;&lt;form id="enemy"&gt;
Name &lt;input type="text" size="20" id="n1" value="Enemy"&gt;&lt;br&gt;
Element &lt;input type="text" size="20" id="e1" value="Water"&gt;&lt;br&gt;
Level &lt;input type="text" size="20" id="l1" value="23"&gt;&lt;br&gt;&lt;br&gt;
Health &lt;input type="text" size="20" id="h1" value="465"&gt;&lt;br&gt;
Magic &lt;input type="text" size="20" id="m1" value="285"&gt;&lt;br&gt;
Speed &lt;input type="text" size="20" id="s1" value="85"&gt;&lt;br&gt;
Attack &lt;input type="text" size="20" id="a1" value="105"&gt;&lt;br&gt;
Defense &lt;input type="text" size="20" id="d1" value="100"&gt;&lt;br&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;input type="button" value="Attack" onclick="doOne('attack')"&gt;
&lt;input type="button" value="Defend" onclick="doOne('defend')"&gt;
&lt;input type="button" value="Fireball" onclick="doOne('fireball')"&gt;
&lt;input type="button" value="Lightning" onclick="doOne('lightning')"&gt;
&lt;input type="button" value="Heal" onclick="doOne('heal')"&gt;
&lt;/body&gt;&lt;/html&gt;
Copy linkTweet thisAlerts:
@tenniskid493authorJan 29.2006 — Yay..it works. Thank You SOOOOOOOOOOOOOOOOOOOOOOOO Much!!! ? ?

You helped me out a ton. How would you like me to credit you..should I use konithomimo or do you want me to use another name?

Also, just to make sure that I undestand your code fully: doOne is a function and ins is passed to the function based on what button you pressed. It then uses a if statement to figure out which button you pressed and then executes that certain code??? Also, Id is just an alternate to name and is used similarly and it is gotten by document.getElementById???
Copy linkTweet thisAlerts:
@konithomimoJan 29.2006 — An ID is a unique attribute. Never give two objects the same ID. It is accessed via the call getElementById(). Unlike name, it is easier to access because you don't need to know the formname if your object is inside of a form.

I chose to use just one function, because the code is small. If you were going to make the program much bigger, then create a seperate function for each button. Just make sure to declare the correct variables inside of each function.

As far as giving me credit, just use konithomimo. I use it on most sites. You can also give my site URL (which is down at the moment) www.isuria.com . It will be back up shortly. You can also just recommend this forum and give my name if you want. I am on here 4-5 days a week.
×

Success!

Help @tenniskid493 spread the word by sharing this article on Twitter...

Tweet This
Sign in
Forgot password?
Sign in with TwitchSign in with GithubCreate Account
about: ({
version: 0.1.9 BETA 5.9,
whats_new: community page,
up_next: more Davinci•003 tasks,
coming_soon: events calendar,
social: @webDeveloperHQ
});

legal: ({
terms: of use,
privacy: policy
});
changelog: (
version: 0.1.9,
notes: added community page

version: 0.1.8,
notes: added Davinci•003

version: 0.1.7,
notes: upvote answers to bounties

version: 0.1.6,
notes: article editor refresh
)...
recent_tips: (
tipper: @AriseFacilitySolutions09,
tipped: article
amount: 1000 SATS,

tipper: @Yussuf4331,
tipped: article
amount: 1000 SATS,

tipper: @darkwebsites540,
tipped: article
amount: 10 SATS,
)...