webForumDet fria alternativet

Plocka ut siffror före och efter "|"?

JavaScript

13 svar · 262 visningar · startad av Jesper T

Medlem sedan nov. 20017 144 inlägg
Frågan#1

link1[3] = new boxData("Virknålar",10|5.3);

Jag skulle vilja plocka ut värdet före, respektive efter "|".
Hur gör man det?

Medlem sedan juni 20014 421 inlägg
#2
firstSplit=link1[3].split(",")
finalSplit=firstSplit[1].split("|")
alert(finalSplit[0])
alert(finalSplit[1])

Jag splittar först strängen efter , för att få "Virknålar" och "10|5.3" i en egen array. Därefter splitar jag den delen av arrayen som 10|5.3 ligger i, dessa läggs i en ny array vid namn finalSplit.

Medlem sedan nov. 20017 144 inlägg
#3

Tack, men denna rad kan se ut på flera sätt:
ex.

link1[3] = new boxData("Virknålar",10|5.3);
link2[1] = new boxData("Virknålar",10|5.3);
link0[2] = new boxData("Virknålar",10|5.3);

Skapar det problem då?

Medlem sedan nov. 20017 144 inlägg
#4

Iofs så hamnar "10|5.3" i ett value i en select så att det kanske inte spelar någon roll?!

Medlem sedan juni 20014 421 inlägg
#5

Nej inte så länge du har fler kommatecken i de olika värdena...Sen kan du ändra såväl indexet som namnet på arrayen (linkx[i]) hur du vill. sålänge som du har ett kommatecken innan 10|5.3 men du kan ha hur många kommatecken du vill efter...

Medlem sedan nov. 20017 144 inlägg
#6

Det ser ut så här:

 <form name="form1" method="post" action="">
<input type="hidden" name="hiddenField" value="[b]10|5.3[/b]">
</form>

Och där ifrån skall värdet splittas.

Medlem sedan juni 20014 421 inlägg
#7

Du kan lägga det i en funktion om du vill:

function splitme(stringToSplit, firstSeparator, secondSeparator){
firstSplit=stringToSplit.split(firstSeparator)
finalSplit=firstSplit[1].split(secondSeparator)
alert(finalSplit[0])
alert(finalSplit[1])
//return finalSplit
}

Där stringToSplit, firstSeparator, secondSeparator är variablar som du skickar med när du anropar funktionen.

Men när du vill ta hand om värdena då får du skicka iväg arrayen med en return till den funktion som du anropade ifrån med return. Därefter så får du behandla värdena där.

Medlem sedan juni 20014 421 inlägg
#8
document.form1.hiddenField.value.split("|")
Medlem sedan nov. 20017 144 inlägg
#9

Har ändrat detta 100 gånger nu, vad är fel?
Vill ha värdet till höger om |

<form name="form1">
<input type="text" name="hiddenField" value="10|5.4">
<script>
document.write(document.form1.hiddenField.value[1].split("|"))
</script>
</form>
Medlem sedan juni 200032 967 inlägg
#10
<form name="form1">
<input type="text" name="hiddenField" value="10|5.4">
<script>
document.write(document.form1.hiddenField.value.split("|")[1]);
</script>
</form>

Mvh,

Medlem sedan nov. 20017 144 inlägg
#11

Nu så strår det "NaN" i fälten.
Nu/funkar ej:

 var splittatVarde = (document.TrainForm.MET.value.split("|")[1]);
var calBurnt = Math.round(splittatVarde * document.TrainForm.Vikt.value * duration);
<input type="hidden" name="MET" value="10|5.6">

Förut/funkar:

 var calBurnt = Math.round(document.TrainForm.MET.value * document.TrainForm.Vikt.value * duration); 
<input type="hidden" name="MET" value="5.6">
Medlem sedan nov. 20017 144 inlägg
#12

Vad kan det vara för fel?

Medlem sedan nov. 20017 144 inlägg
#13

Är det någon som har en idé?

Medlem sedan juni 20014 421 inlägg
#14

När du splitade görs den om till en sträng. Prova att göra såhär:

var splittatVarde = (document.TrainForm.MET.value.split("|")[1]);
var calBurnt = Math.round([b]eval(splittatVarde)[/b] * document.TrainForm.Vikt.value * duration);
<input type="hidden" name="MET" value="10|5.6">
255 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
119 ms — deklarationer (db)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)
121 ms — ändringar (db)