webForumDet fria alternativet

addera i script

JavaScriptur Javascript

25 svar · 1 036 visningar · startad av Gimbo

Medlem sedan dec. 20001 626 inlägg
Frågan#1

hej har ett script som där då jag väljer en storlek i en dropdown så visas en vikt, använder mig utav följande kod för dropdownen:

<SCRIPT LANGUAGE="JavaScript">function changeWeight(selValue){if(selValue==''){swd.childNodes[0].nodeValue='Select a ring size.';}else if (selValue=='min'||selValue=='max'||selValue=='mid'){swd.childNodes[0].nodeValue='Call xxx-xxx-xxxx.';} else if(selValue=='4'){swd.childNodes[0].nodeValue='5.0g'} else if(selValue=='4.5'){swd.childNodes[0].nodeValue='5.2g'} else if(selValue=='5'){swd.childNodes[0].nodeValue='5.3g'} else if(selValue=='5.5'){swd.childNodes[0].nodeValue='5.5g'} else if(selValue=='6'){swd.childNodes[0].nodeValue='5.6g'} else if(selValue=='6.5'){swd.childNodes[0].nodeValue='5.7g'} else if(selValue=='7'){swd.childNodes[0].nodeValue='5.9g'} else if(selValue=='7.5'){swd.childNodes[0].nodeValue='6.0g'} else if(selValue=='8'){swd.childNodes[0].nodeValue='6.2g'} else if(selValue=='8.5'){swd.childNodes[0].nodeValue='6.3g'} else if(selValue=='9'){swd.childNodes[0].nodeValue='6.5g'} else if(selValue=='9.5'){swd.childNodes[0].nodeValue='6.6g'} else if(selValue=='10'){swd.childNodes[0].nodeValue='6.7g'} else if(selValue=='10.5'){swd.childNodes[0].nodeValue='6.9g'} else if(selValue=='11'){swd.childNodes[0].nodeValue='7.0g'} else if(selValue=='11.5'){swd.childNodes[0].nodeValue='7.2g'} else if(selValue=='12'){swd.childNodes[0].nodeValue='7.3g'} else if(selValue=='12.5'){swd.childNodes[0].nodeValue='7.5g'} else if(selValue=='13'){swd.childNodes[0].nodeValue='7.6g'}else{swd.childNodes[0].nodeValue='Select a ring size.';}}</SCRIPT>

men nu vill jag att vikterna inte skall va fasta utan jag ska hämta ett värde från databasen (mha ASP) och multiplicera den med 1.032 och då kommer jag få ut vikten, hur skall jag göra detta smidigast?

Medlem sedan dec. 20025 483 inlägg
#2

Hur vill du att uträkningen skall ske? Du gör ett val i dropdownen och en vikt visas. Skall det värdet sedan multipliceras med 1.032? Om inte låter det som att du kan sköta allting med ASP: du hämtar värdet från databasen, multiplicerar det med 1.032 och skriver ut det på sidan.

:)

Medlem sedan dec. 20001 626 inlägg
#3

tja peter,
jag vill att uträkningen skall ske innan vikten skall visas, just nu har jag så att en vikt visas statiskt, men det jag vill är att ett värde från databasen skall multipliceras med 1.032 och därefter så skall vikten visas, att jag inte gör det med ASP är pga att jag måste refresha hela sidan då de väljer något från dropdownen och det vill jag inte, men om multiplikationen kan ske i asp och därefter så matar man in värdena i javascriptet så är det ok för mig.

Medlem sedan dec. 20025 483 inlägg
#4

Anropar du changeWeight() enligt

<select onchange="changeWeight(...)"

? Då

function mulNodeVal(){
    if (/^(\d\.\d)g$/.test(swd.childNodes[0].nodeValue)){
	swd.childNodes[0].nodeValue = RegExp.$1 * 1.032 + 'g';
    }
}

onchange="changeWeight(...); mulNodeVal()"

:)

Medlem sedan dec. 20001 626 inlägg
#5

jupp anropar den på följande vis:

OnChange="if (isMenu){changeWeight(this.options[this.selectedIndex].value);}"

så skall jag göra som du visat mig för samtliga storlekar dvs upprepa en elseif sats efter det där...
en fråga till vad gör detta: RegExp.$1 är det värdet som jag hämtar från databasen? kan jag trycka in värdet som jag hämtar från databasen där mha "&rs("vikt")&" eller ngt liknande?

uppskattar verkligen din hjälp!

Medlem sedan dec. 20025 483 inlägg
#6

I den där kodsnutten skulle det bli

OnChange="if (isMenu){changeWeight(this.options[this.selectedIndex].value);mulNodeVal();}"

RegExp.$1 hämtar ut decimaltalet från värdena. I t ex '5.5g' innehåller RegExp.$1 '5.5'. Det värdet multipliceras sedan med 1.032.

Vad vill du addera rs("vikt") till?

Medlem sedan dec. 20001 626 inlägg
#7

förlåt jag menar multiplicera rs("vikt"), vilket är ett värde från databasen och det skall multipliceras med 1.032

Medlem sedan dec. 20025 483 inlägg
#8

Skall det bakas in i JavaScriptet du postade i det första inlägget, d v s i det fetstilta nedan

swd.childNodes[0].nodeValue='[b]5.2g[/b]'

? Om rs("vikt") loopas ut behöver du bara göra så här:

swd.childNodes[0].nodeValue='<%=rs("vikt")%>'
Medlem sedan dec. 20001 626 inlägg
#9

hej, o ursäkta för det sena svaret, va på semester... jag har testat det du säger men det tycks inte fungera, så här ser min kompletta kod ut:

<SELECT NAME="ring_size" CLASS="PagingFilterDropDown" OnChange="if (isMenu){changeWeight(this.options[this.selectedIndex].value);mulNodeVal();}">
                                     
                                          <OPTION VALUE="">Select a size</OPTION>
                                     <OPTION VALUE='min'>Less than 4<OPTION VALUE='4'>4<OPTION VALUE='4.5'>4.5<OPTION VALUE='5'>5<OPTION VALUE='5.5'>5.5<OPTION VALUE='6'>6<OPTION VALUE='6.5'>6.5<OPTION VALUE='7'>7<OPTION VALUE='7.5'>7.5<OPTION VALUE='8'>8<OPTION VALUE='8.5'>8.5<OPTION VALUE='9'>9<OPTION VALUE='9.5'>9.5<OPTION VALUE='10'>10<OPTION VALUE='10.5'>10.5<OPTION VALUE='11'>11<OPTION VALUE='11.5'>11.5<OPTION VALUE='12'>12<OPTION VALUE='12.5'>12.5<OPTION VALUE='13'>13<OPTION VALUE='max'>Greater than 13
									 </select>

<SCRIPT LANGUAGE="JavaScript">
function mulNodeVal(){
    if (/^(\d\.\d)g$/.test(swd.childNodes[0].nodeValue)){
	swd.childNodes[0].nodeValue = RegExp.$1 * 1.032 + 'g';
    }
    end if
}
</script>

<!--och här skrivs värdet på formeln ut beroende på storleken som väljes i dropdown-->

<SCRIPT LANGUAGE="JavaScript">if (isMenu) {var swd=document.getElementById("span_weight_display");changeWeight(document.getElementById("ring_size").options[document.getElementById("ring_size").selectedIndex].value);}</SCRIPT>

som sagt det jag vill göra är att då de väljer exempelvis storlek 8 från dropdownen att det värdet multipliceras med 1.32 * ett värde från databasen och därefter skrivs det ut? så att formeln ser ut som följer, val från dropdown * 1.032 * värde från databas

i hope it make sence, är tacksam för svar

Medlem sedan dec. 20025 483 inlägg
#10
function mulNodeVal(){
    if (/^(\d\.\d)g$/.test(swd.childNodes[0].nodeValue)){
	swd.childNodes[0].nodeValue = RegExp.$1 * 1.032 * [b]värde_från_databas[/b] + 'g';
    }
}

Skriv databasvärdet i det fetstilta området ovan.

Medlem sedan dec. 20001 626 inlägg
#11

får fel i javascript, objekt förväntas får jag som fel

Medlem sedan dec. 20025 483 inlägg
#12

Kan du visa all JS-kod så som den ser ut i "Visa källa"?

Medlem sedan dec. 20001 626 inlägg
#13

all JS-kod, here you go:

================HAR INGET MED FRÅGAN ATT GÖRA====================
		<script language="JavaScript">
		function highLite(imgName) {
	if (document.images) {
	    isMouseOver = "yes";
		document[imgName].src="images/" + imgName + "_on.png";
	}
}
function lowLite(imgName) {
	if (document.images) {
	    isMouseOver = "no";
		document[imgName].src="images/" + imgName + ".png";
	}
}
function SubmitSearch() {
	document.search.submit();
}
function SubmitForm(x) {
	x;
}
function SubmitCart(i) {
	document.location = "shop.asp?id="+i;

}
function SubmitShop(i) {
	document.form1.submited.value = i;
	//document.form1.submit();
}

function SizeChange(i) {
  	document.form1.submited.value = i;
	document.form1.elements['update'].click();
}

function SubmitMovePage(i) {
	document.MovePage.intpage.value = i;
	document.MovePage.intpage2.value = "page";
	document.MovePage.submit();
}
function openPopup(strMessage)
{
window.open(strMessage,"ProductPicture","Height=500,Width=500,scrollbars=1");
}

function Verify() {
	var f = document.forms.custinfo; 
	var count = 0;
	var msg = "The following information is required: \n";
	var shipping = false;
	
	if (f.shipping_same.checked == false){
		var shipping = true;
	}

	for (var i=0; i<f.length; i++) { 
		var e = f.elements[i];
		if ((e.name == "cardholderfname") && (e.value == "")) {
			msg = msg + " -First Name on Credit Card \n";
			count += 1;
			continue;
		}
		if ((e.name == "email") && (e.value == "")) {
			msg = msg + " -Email Address \n";
			count += 1;
			continue;
		}
	}
	if (count > 0) {
		alert(msg);
		return false;
	}
	return true;
}

function VerifyRingSizer() {
	var f = document.forms.RingSize; 
	var count = 0;
	var msg = "The following information is required: \n";
	

	for (var i=0; i<f.length; i++) { 
		var e = f.elements[i];
		if ((e.name == "Name") && (e.value == "")) {
			msg = msg + " - Name \n";
			count += 1;
			continue;
		}
		if ((e.name == "S1") && (e.value == "")) {
			msg = msg + " -Please include Comments \n";
			count += 1;
			continue;
		}
	}
	if (count > 0) {
		alert(msg);
		return false;
	}
	return true;
}

function VerifyWishList() {
	var f = document.forms.WishList; 
	var count = 0;
	var msg = "The following information is required: \n";
	

	for (var i=0; i<f.length; i++) { 
		var e = f.elements[i];
		if ((e.name == "Name") && (e.value == "")) {
			msg = msg + " - Name \n";
			count += 1;
			continue;
		}
		if ((e.name == "Address") && (e.value == "")) {
			msg = msg + " -Address \n";
			count += 1;
			continue;
		}
		if ((e.name == "City") && (e.value == "")) {
			msg = msg + " -City \n";
			count += 1;
			continue;
		}
		if ((e.name == "Region") && (e.value == "")) {
			msg = msg + " -Region/State \n";
			count += 1;
			continue;
		}
		if ((e.name == "Postal_Code") && (e.value == "")) {
			msg = msg + " -Postal Code/Zip Code \n";
			count += 1;
			continue;
		}
		if ((e.name == "Country") && (e.value == "")) {
			msg = msg + " -Country \n";
			count += 1;
			continue;
		}
		if ((e.name == "Email") && (e.value == "")) {
			msg = msg + " -Email Address \n";
			count += 1;
			continue;
		}
		if ((e.name == "S1") && (e.value == "")) {
			msg = msg + " -Please include Wish List/Comments  \n";
			count += 1;
			continue;
		}
	}
	if (count > 0) {
		alert(msg);
		return false;
	}
	return true;
}

function VerifyAddURL() {
	var f = document.forms.AddURL; 
	var count = 0;
	var msg = "The following information is required: \n";
	

	for (var i=0; i<f.length; i++) { 
		var e = f.elements[i];
		if ((e.name == "Name") && (e.value == "")) {
			msg = msg + " - Name \n";
			count += 1;
			continue;
		}
		if ((e.name == "Address") && (e.value == "")) {
			msg = msg + " -Address \n";
			count += 1;
			continue;
		}
		if ((e.name == "City") && (e.value == "")) {
			msg = msg + " -City \n";
			count += 1;
			continue;
		}
		if ((e.name == "Region") && (e.value == "")) {
			msg = msg + " -Region/State \n";
			count += 1;
			continue;
		}
		if ((e.name == "Postal_Code") && (e.value == "")) {
			msg = msg + " -Postal Code/Zip Code \n";
			count += 1;
			continue;
		}
		if ((e.name == "Country") && (e.value == "")) {
			msg = msg + " -Country \n";
			count += 1;
			continue;
		}
		if ((e.name == "Phone") && (e.value == "")) {
			msg = msg + " -Phone Number \n";
			count += 1;
			continue;
		}
		if ((e.name == "FAX") && (e.value == "")) {
			msg = msg + " -FAX Number \n";
			count += 1;
			continue;
		}
		if ((e.name == "Email") && (e.value == "")) {
			msg = msg + " -Email Address \n";
			count += 1;
			continue;
		}
		if ((e.name == "S1") && (e.value == "")) {
			msg = msg + " -Please include Your Site Listing Information  \n";
			count += 1;
			continue;
		}
	}
	if (count > 0) {
		alert(msg);
		return false;
	}
	return true;
}

function loadPop(url){ 
	ansWin = window.open(url,'prod','width=400,height=450,status=no,scrollbars=yes,resize=no,menubar=no,directories=no,');
}

//prod','width=400,height=450,status=no,scrollbars=yes,resize=no,menubar=no,directories=no,');
//}

		// -->
		</script>

================//HAR INGET MED FRÅGAN ATT GÖRA==================

Select size:<font face="Arial" color="#555555" size="2">&nbsp;<SELECT NAME="ring_size" CLASS="PagingFilterDropDown" OnChange="if (isMenu){changeWeight(this.options[this.selectedIndex].value);mulNodeVal();}" style="font-family: Arial; font-size: 8pt">
                                     
                                          <OPTION VALUE="">Select a size</OPTION>
                                     <OPTION VALUE='min'>Less than 4<OPTION VALUE='4'>4<OPTION VALUE='4.5'>4.5<OPTION VALUE='5'>5<OPTION VALUE='5.5'>5.5<OPTION VALUE='6'>6<OPTION VALUE='6.5'>6.5<OPTION VALUE='7'>7<OPTION VALUE='7.5'>7.5<OPTION VALUE='8'>8<OPTION VALUE='8.5'>8.5<OPTION VALUE='9'>9<OPTION VALUE='9.5'>9.5<OPTION VALUE='10'>10<OPTION VALUE='10.5'>10.5<OPTION VALUE='11'>11<OPTION VALUE='11.5'>11.5<OPTION VALUE='12'>12<OPTION VALUE='12.5'>12.5<OPTION VALUE='13'>13<OPTION VALUE='max'>Greater than 13
									 </select>

<SCRIPT LANGUAGE="JavaScript">
function mulNodeVal(){
    if (/^(\d\.\d)g$/.test(swd.childNodes[0].nodeValue)){
	swd.childNodes[0].nodeValue = RegExp.$1 * 1.032 + 'g';
    }
    end if
}
</script>

<SCRIPT LANGUAGE="JavaScript">if (isMenu) {var swd=document.getElementById("span_weight_display");changeWeight(document.getElementById("ring_size").options[document.getElementById("ring_size").selectedIndex].value);}</SCRIPT>

la koden som inte har ngt med frågan att göra mellan de där "egna"-taggarna.

Är super tacksom för din hjälp Peter S!

Medlem sedan dec. 20025 483 inlägg
#14

Felet kan bero på att det inte finns någon funktion changeWeight() i ovanstående kod.

Dessutom - var ligger elementet med id="span_weight_display"? Samt bör <select> ha id="ring_size" om du med kodstycket 'document.getElementById("ring_size")' på sista raden avser det elementet.

Medlem sedan dec. 20001 626 inlägg
#15

det va ju den funktionen vi ersatta med funktionen du gav mig: function mulNodeVal()
för tidigare hade jag ju en funktion som såg ut så här:

<SCRIPT LANGUAGE="JavaScript">function changeWeight(selValue){if(selValue==''){swd.childNodes[0].nodeValue='Select a ring size.';}else if (selValue=='min'||selValue=='max'||selValue=='mid'){swd.chil  dNodes[0].nodeValue='Call xxx-xxx-xxxx.';} else if(selValue=='4'){swd.childNodes[0].nodeValue='5.0g'} else if(selValue=='4.5'){swd.childNodes[0].nodeValue='5.2g'} else if(selValue=='5'){swd.childNodes[0].nodeValue='5.3g'} else if(selValue=='5.5'){swd.childNodes[0].nodeValue='5.5g'} else if(selValue=='6'){swd.childNodes[0].nodeValue='5.6g'} else if(selValue=='6.5'){swd.childNodes[0].nodeValue='5.7g'} else if(selValue=='7'){swd.childNodes[0].nodeValue='5.9g'} else if(selValue=='7.5'){swd.childNodes[0].nodeValue='6.0g'} else if(selValue=='8'){swd.childNodes[0].nodeValue='6.2g'} else if(selValue=='8.5'){swd.childNodes[0].nodeValue='6.3g'} else if(selValue=='9'){swd.childNodes[0].nodeValue='6.5g'} else if(selValue=='9.5'){swd.childNodes[0].nodeValue='6.6g'} else if(selValue=='10'){swd.childNodes[0].nodeValue='6.7g'} else if(selValue=='10.5'){swd.childNodes[0].nodeValue='6.9g'} else if(selValue=='11'){swd.childNodes[0].nodeValue='7.0g'} else if(selValue=='11.5'){swd.childNodes[0].nodeValue='7.2g'} else if(selValue=='12'){swd.childNodes[0].nodeValue='7.3g'} else if(selValue=='12.5'){swd.childNodes[0].nodeValue='7.5g'} else if(selValue=='13'){swd.childNodes[0].nodeValue='7.6g'}else{swd.childNodes[0].nodeValue='Select a ring size.';}}</SCRIPT>

vilket gav mig statiska värden på vikten, dvs om man väljer värde 13 så får man vikten 7.6 och det är det haf vill ändra på så om väljer 13 så skall multiplikationen utföras

Medlem sedan dec. 20001 626 inlägg
#16

peter?

Medlem sedan dec. 20025 483 inlägg
#17
<script>
var isMenu=1;
function changeWeight(sel){
  // ersätt 999 med databasvärdet
  var db_val = 999;
  if (/^(\d+(?:\.\d)?)$/.test(sel.options[sel.selectedIndex].value))
    { sel.form.elements[0].value = RegExp.$1 * 1.032 * db_val }
}

</SCRIPT>

<form>
<input>
<SELECT NAME="ring_size" CLASS="PagingFilterDropDown" OnChange="if (isMenu) changeWeight(this)">                             
<OPTION VALUE="">Select a size</OPTION>
<OPTION VALUE='min'>Less than 4
<OPTION VALUE='4'>4
<OPTION VALUE='4.5'>4.5
<OPTION VALUE='5'>5
<OPTION VALUE='5.5'>5.5
<OPTION VALUE='6'>6
<OPTION VALUE='6.5'>6.5
<OPTION VALUE='7'>7
<OPTION VALUE='7.5'>7.5
<OPTION VALUE='8'>8
<OPTION VALUE='8.5'>8.5
<OPTION VALUE='9'>9
<OPTION VALUE='9.5'>9.5
<OPTION VALUE='10'>10
<OPTION VALUE='10.5'>10.5
<OPTION VALUE='11'>11
<OPTION VALUE='11.5'>11.5
<OPTION VALUE='12'>12
<OPTION VALUE='12.5'>12.5
<OPTION VALUE='13'>13
<OPTION VALUE='max'>Greater than 13
</select>
</form>
Medlem sedan dec. 20001 626 inlägg
#18

sorry, men får felmeddelandet: 'options' är null eller inte ett objekt

Medlem sedan dec. 20025 483 inlägg
#19

Med vilken kod då?

Medlem sedan dec. 20001 626 inlägg
#20

med den du gav mig

145 ms totalt · 3 externa anrop · v20260731065814-full.25f56b17
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
141 ms — hämta tråd, inlägg och bilagor (db)