Want to protect your cyber security and still get fast solutions? Ask a secure question today.Go Premium

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 686
  • Last Modified:

Custom Attribute Javascript Loop trough elements.

So i have this code:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Test</title>
</head>
<body>
<form name="formtab1" id="formtab1">
  <select name="ZoneDropdown" id="ZoneDropdown" onchange="DisplayFormValues()" class="dropdown">
    <option value="" title="">Please Select</option>
    <option value="BLP" title="POLOB" price="5.0000">BLP</option>
  </select>
  <select name="LogoDropdown" id="LogoDropdown" onchange="DisplayFormValues()" class="dropdown">
    <option value="vv" title="tester" price="2.0000">Please Select</option>
    <option value="BLP" title="POLO" price="5.0000">BACK</option>
  </select>
  <input id="AddEmb" name="AddEmb" type="text" />
</form>
<script type="text/javascript">
function DisplayFormValues() { var str = '';
var elem = document.getElementById('formtab1').elements;
for(var i = 0; i < elem.length; i++) { str += elem[i].value };       <----------- I need elem[i].price not value |
		document.getElementById('AddEmb').value = str;
}

function on()
   {
   var w = document.formtab1.ZoneDropdown.selectedIndex;
   var selected_text = document.formtab1.ZoneDropdown[document.formtab1.ZoneDropdown.selectedIndex].getAttribute('price');
   alert(selected_text);
   }
</script>
</body>
</html>

Open in new window


I have multiple dropdowns, mu goal is to sum up the Custom Attribute "Price". But i cannot get the attribute to pull up the value. While example function "on" works. When i do it inside a loop it fails.

I tried:
 elem[i].price, elem[i].getAttribute('price') 

Open in new window

and a bunch of things but nothing worked for me.

Thanks
0
uniformer
Asked:
uniformer
  • 6
  • 3
1 Solution
 
leakim971PluritechnicianCommented:
use : elem[i].getAttribute("price");
0
 
leakim971PluritechnicianCommented:
better(?) :  parseFloat(    elem[i].getAttribute("price")     );
0
 
uniformerAuthor Commented:
[code]use : elem[i].getAttribute("price");[/code]

I tried this in this

[code]for(var i = 0; i < elem.length; i++) { str += elem[i].value };[/code]

But the result not good. My whole goal in this loop is instead of
[code] elem[i].value [/code]

to get the Custom Atribute price.
0
Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
leakim971PluritechnicianCommented:
You said : mu goal is to sum up the Custom Attribute "Price"

So :


str = 0;
for(var i = 0; i < elem.length; i++) { str += elem[i].getAttribute("price"); };

Open in new window

0
 
leakim971PluritechnicianCommented:
Or better(?) :


str = 0;
for(var i = 0; i < elem.length; i++) { str += parseFloat(elem[i].getAttribute("price")); };

Open in new window

0
 
uniformerAuthor Commented:
[code]
function DisplayFormValues() { var str = '0';
var elem = document.getElementById('formtab1').elements;
str = 0;
for(var i = 0; i < elem.length; i++) { str += parseFloat(elem[i].getAttribute("price")); };
document.getElementById('AddEmb').value = str;
}
[/code]

This code gives me "NaN" when testing.

[code]
function DisplayFormValues() { var str = '0';
var elem = document.getElementById('formtab1').elements;
str = 0;
for(var i = 0; i < elem.length; i++) { str += elem[i].getAttribute("price"); };
document.getElementById('AddEmb').value = str;
}
[/code]

This code gives me "0"

Am i doing something wrong?

Thanks
0
 
leakim971PluritechnicianCommented:
Check this :


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Test</title>
<script type="text/javascript">
	function DisplayFormValues() {
		var str = 0;
		var elem = document.getElementById('formtab1').elements;
		for(var i=0;i<elem.length;i++) {
			if(elem[i].tagName.toLowerCase() == "select") {
				var price = elem[i].options[elem[i].selectedIndex].getAttribute("price");
				str += (price)?parseFloat(price):0;
			}
			else {
				var price = elem[i].getAttribute("price");
				str += (price)?parseFloat(price):0;
			}
		}
		document.getElementById('AddEmb').value = "$" + str.toFixed(2);
	}
	
	function on() {
		var w = document.formtab1.ZoneDropdown.selectedIndex;
		var selected_text = document.formtab1.ZoneDropdown[document.formtab1.ZoneDropdown.selectedIndex].getAttribute('price');
		alert(selected_text);
	}
</script>
</head>
<body>
<form name="formtab1" id="formtab1">
    <select name="ZoneDropdown" id="ZoneDropdown" onchange="DisplayFormValues();" class="dropdown">
        <option value="" title="">Please Select</option>
        <option value="BLP" title="POLOB" price="5.0000">BLP</option>
    </select>
    <select name="LogoDropdown" id="LogoDropdown" onchange="DisplayFormValues();" class="dropdown">
        <option value="vv" title="tester" price="2.0000">Please Select</option>
        <option value="BLP" title="POLO" price="5.0000">BACK</option>
    </select>
    <input id="AddEmb" name="AddEmb" type="text" />
</form>
</body>
</html>

Open in new window

0
 
uniformerAuthor Commented:
Yep! Thats it... I guess i was doing a few things wrong.. Thanks
0
 
leakim971PluritechnicianCommented:
You're welcome! Thanks for the points!
0

Featured Post

Concerto Cloud for Software Providers & ISVs

Can Concerto Cloud Services help you focus on evolving your application offerings, while delivering the best cloud experience to your customers? From DevOps to revenue models and customer support, the answer is yes!

Learn how Concerto can help you.

  • 6
  • 3
Tackle projects and never again get stuck behind a technical roadblock.
Join Now