mboost-dp1

Javascript


Gå til bund
Gravatar #1 - pstidsen
27. feb. 2011 18:11
Jeg har 150 linjer som ser sådan her ud:
<tr><td>Vare:</td><td><select id="SelectID1" onchange="showVal(this.value)" name="vare1"><option value="NaN">Vælg vare</option></select></td><td>Antal:</td><td><input type="text" style="width:100px;" name="antal1" id="antal1" onchange="changed(1)" /></td><td>Pris:</td><td><input type="text" style="width:100px;" name="pris1 " id="pris1" onchange="changed(1)" readonly="readonly" /></td><td>I alt:</td><td><input type="text" style="width:100px;" name="ialt1" id="ialt1" readonly="readonly" /></td></tr>

<tr><td>Vare:</td><td><select id="SelectID2" onchange="showVal(this.value)" name="vare2"><option value="NaN">Vælg vare</option></select></td><td>Antal:</td><td><input type="text" style="width:100px;" name="antal2" id="antal2" onchange="changed(2)" /></td><td>Pris:</td><td><input type="text" style="width:100px;" name="pris2 " id="pris2" onchange="changed(2)" readonly="readonly" /></td><td>I alt:</td><td><input type="text" style="width:100px;" name="ialt2" id="ialt2" readonly="readonly" /></td></tr>

<tr><td>Vare:</td><td><select id="SelectID3" onchange="showVal(this.value)" name="vare3"><option value="NaN">Vælg vare</option></select></td><td>Antal:</td><td><input type="text" style="width:100px;" name="antal3" id="antal3" onchange="changed(3)" /></td><td>Pris:</td><td><input type="text" style="width:100px;" name="pris3 " id="pris3" onchange="changed(3)" readonly="readonly" /></td><td>I alt:</td><td><input type="text" style="width:100px;" name="ialt3" id="ialt3" readonly="readonly" /></td></tr>
osv. osv. osv. osv.

Jeg har de her scripts:
<script type="text/javascript">
function changed(number) {
var stk = Number(document.getElementById('antal'+number).value);
var p = Number(document.getElementById('pris'+number).value);
document.getElementById('ialt'+number).value = stk * p;

var total = 0;
for (i = 1; i < 6; i++) {
total += document.getElementById('ialt'+i).value;
}
document.getElementById('total').value = total;
}

function showVal( val ){
document.getElementById("pris1").value=val;
}
window.onload = function () {
var SelectData = {
"Ting 1":"111",
"Ting 2":"222",
"Ting 3":"333",
};

for (i=1;i<=150;i++){
for(var key in SelectData){
var op = document.createElement('option');
op.value=SelectData[key];
op.text=key;
document.getElementById("SelectID"+i).add(op, null);
}
}
}
</script>
Men der er bare så mange fejl...

Jeg nævner nogle:
- Når jeg vælger en ting i dropdown kommer prisen altid til at stå i øverste prisfelt og ikke ud for den dropdownmenu jeg har valgt den i.
- Pludselig er æ, ø og å blevet til underlige tegn
- Hvis der står 222 i et i alt felt kommer der til at stå 0222 i total felt.

Derudover vil jeg gerne have at der kommer en kasse mere hvor der kommer forskellig tekst hvis man vælger en ting i dropdownmenu. F.eks. hvis man vælger "Ting1" kommer der til at stå "Ting1 er bare en prøve" i beskrivelses feltet. Det ville også være fedt hvis der kunne komme et billede af det man vælger i dropdown menu??

Siden jeg laver på ligger i øjeblikket her: http://runescapenews.dk/Pstidsen/webshopprojekt/ko...
Gravatar #2 - myplacedk
27. feb. 2011 18:28
pstidsen (1) skrev:
- Når jeg vælger en ting i dropdown kommer prisen altid til at stå i øverste prisfelt og ikke ud for den dropdownmenu jeg har valgt den i.

Øhh... Ja?

function showVal( val ){
document.getElementById("pris1").value=val;
}

Hvad havde du ellers forventet? ;-)

pstidsen (1) skrev:
- Pludselig er æ, ø og å blevet til underlige tegn

Der står øverst i dokumentet at det er i UTF8, men det er faktisk i latin-1 (8859-1). Vælg en encoding, og hold dig til det. ;-)

pstidsen (1) skrev:
- Hvis der står 222 i et i alt felt kommer der til at stå 0222 i total felt.

Du lægger sammen på en uheldig måde.

var foo = "a" + "b"; // giver "ab"
var bar = "0" + "222"; // giver "0222"
var baz = 0 + 222; // giver 222

Problemet er at tekst-felterne ikke indeholder tal (som ved baz), de indeholder strenge (som ved bar).

Det du gør er:

var foo = 0 + "222"; // giver "0222"

Det du skal gøre er:

var bar = 0 + parseInt("222"); // giver 222

Dvs. du skal ændre denne linje:

total += document.getElementById('ialt'+i).value;

til:

total += parseInt(document.getElementById('ialt'+i).value);
Gravatar #3 - pstidsen
27. feb. 2011 19:34
myplacedk (2) skrev:
Øhh... Ja?

function showVal( val ){
document.getElementById("pris1").value=val;
}

Hvad havde du ellers forventet? ;-)

At ham der har givet mig koden havde lavet det rigtigt :D hehe. Men nu har jeg ændret til:

function showVal( val ){
document.getElementById('pris'+number).value=val;
}


Uden det virker??



Og hvad med
pstidsen (1) skrev:
Derudover vil jeg gerne have at der kommer en kasse mere hvor der kommer forskellig tekst hvis man vælger en ting i dropdownmenu. F.eks. hvis man vælger "Ting1" kommer der til at stå "Ting1 er bare en prøve" i beskrivelses feltet. Det ville også være fedt hvis der kunne komme et billede af det man vælger i dropdown menu??
??
Gravatar #4 - Windcape
27. feb. 2011 19:41
Prettified by random JS framework (like prototype)


function changed(number) {
var antal = parseInt($("antal" + number).getValue());
var pris = parseInt($("pris" + number).getValue());

$("ialt" + number).update(antal * pris);

var total = 0;
for (var i = 1; i < 6; i++) {
total += parseInt($("ialt" + i).getValue());
}

$("total").update(total);
}

function showVal(value) {
$("pris1").update(value);
}

Event.observe("onload", function() {
var SelectData = {
"Ting 1": "111",
"Ting 2": "222",
"Ting 3": "333",
};

for (var i = 1; i <= 150; i++) {
for (var key in SelectData) {
$("SelectID" + i).appendChild(
new Element("option", SelectData[key])).update(key);
}
}
});
Gravatar #5 - pstidsen
27. feb. 2011 19:53
#4.... Aarrhhh nu er der intet i dropdownmenu..
Gravatar #6 - Windcape
27. feb. 2011 20:00
#5


for (var i = 1; i <= 150; i++) {
for (var key in SelectData) {
$("SelectID" + i).appendChild(
new Element("option", SelectData[key]).update(key));
}
}


Ikke at jeg har taget noget som helst #2 / #3 skrev med. Pointen var nu bare at alm. JavaScript er så grimt, og direkte ustabilt (mht. browsere), at man bør benytte prototype/JQuery, hvis man har muligheden.
Gravatar #7 - Josso
27. feb. 2011 20:04
pstidsen (3) skrev:
Men nu har jeg ændret til:

function showVal( val ){
document.getElementById('pris'+number).value=val;
}


Uden det virker??


Hvor får du variablen number fra?
Den skal jo også hentes et eller andet sted fra.
Gravatar #8 - pstidsen
27. feb. 2011 20:18
Josso (7) skrev:


Hvor får du variablen number fra?
Den skal jo også hentes et eller andet sted fra.


Jeg kan INTET js... Så det var rent gæt, så det stod et andet sted i et script... Men hvordan skal jeg så gøre??

#6 Hvor skal det stå??
Gravatar #9 - Windcape
27. feb. 2011 20:24
pstidsen (8) skrev:
Jeg kan INTET js
Buy a book, read it.
Gravatar #10 - myplacedk
27. feb. 2011 20:35
pstidsen (8) skrev:
Jeg kan INTET js

Lær det, eller overdrag opgaven til nogen som kan det.

Der er grænser for hvor langt man kan komme med "hvad gør jeg så nu?"

Jeg vil ikke påstå at denne opgave ikke er en god begynder-opgave. Men den kan ikke udføres af folk som hverken kan Javascript eller vil lære det. Og hvis du gerne vil lære det, så læs om det. Gør selv en indsats.
Gå til top

Opret dig som bruger i dag

Det er gratis, og du binder dig ikke til noget.

Når du er oprettet som bruger, får du adgang til en lang række af sidens andre muligheder, såsom at udforme siden efter eget ønske og deltage i diskussionerne.

Opret Bruger Login