---
title: "Slider i JavaScript, hjälp med bugg"
type: "forum-thread"
url: "https://www.webforum.nu/amne/javascript/118277-slider-i-javascript-hjälp-med-bugg"
topic: "JavaScript"
topic_url: "https://www.webforum.nu/amne/javascript"
author: "jazzil"
published: "2004-12-18T13:47:38.000Z"
updated: "2004-12-18T15:34:35.000Z"
replies: 6
views: 417
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/javascript/118277-slider-i-javascript-hjälp-med-bugg"
---

# Slider i JavaScript, hjälp med bugg

## #1 — jazzil, 2004-12-18T13:47Z

Tjena .. jag har byggt en slider i JavaScript och den har några buggar som jag skulle vilja ha hjälp med att fåbort.

[Sidan med slidern](http://mekk.mine.nu/aspnet/atletic_mms/add.aspx) 

Om man nu tar min slider och dra den mot vänster så stannar den på noll men dra du vidare med musen så hoppar den till baka till där den började asså på 20 och gör jag så att den stannar kvar på noll även om man gå på minus tal?

```
window.onload = function(){ 
	ArrowDiv = document.getElementById(ArrowName); 
	TextField = document.getElementById(TextFieldToFill);
	HiddenTField = document.getElementById(HiddenField);
	laVal = replaceSubstring(ArrowDiv.style.left,"px","");//Replace substring är bara en funtion som är säkrare att anända än Regular expression ditot.
}
document.onmouseup = function(){
	active = false; 
	var RounderValue = replaceSubstring(ArrowDiv.style.left,"px", "");
	Round20(RounderValue);
}
document.onmousedown = function(e){
    var evt;
    if (typeof(evt = window.event) != "undefined" && evt.srcElement == ArrowDiv){
	active = true;
	lpos   = evt.screenX;
	curL   = ArrowDiv.offsetLeft;
    }
    else if (typeof (evt = e) != "undefined" && e.target == ArrowDiv){
	active = true;
	lpos   = evt.pageX;
	curL   = ArrowDiv.offsetLeft;
    }
}
document.onmousemove = function(e){
    var evt;
    output = null;
    if (active)
    {
		if (typeof(evt = window.event) != "undefined")
		{
			if(curL + (evt.screenX - lpos) <= Values[0]-1){
				ArrowDiv.style.left = "0";
			}
			else if(curL + (evt.screenX - lpos) >= (Values[Values.length-1]+1)){
				ArrowDiv.style.left = Values[Values.Length-1] + "px";
			}
			else{
				ArrowDiv.style.left = curL + (evt.screenX - lpos);
			}
   	 	}
		else if (typeof(evt = e) != "undefined")
		{
			if(curL + (evt.pageX - lpos) <= Values[0]-1){
				ArrowDiv.style.left = "0";
			}
			else if(curL + (evt.pageX - lpos) >= (Values[Values.length-1]+1)){
				ArrowDiv.style.left = Values[Values.Length-1] + "px";
			}
			else{
				ArrowDiv.style.left = curL + (evt.pageX - lpos) + "px";
			}
    	}
    	output = replaceSubstring(ArrowDiv.style.left,"px", "");   	
		Glue(output);
	}
}
function TextFiller(value)
{
	for(var i=0;i<(Values.length+1);i++)
	{
		if(value == Values[i])
		{
			TextField.value = ValueNames[i];
			HVal = i+1;
			HiddenTField.value = HVal;
			break;
		}
	}
}
function Glue(value)
{ 
    var i = 0;
	while(i < Values[Values.length-1]+1)
	{
		if(value >= (i-AttachPixels) && value <= (i+AttachPixels)){
			ArrowDiv.style.left = i + "px";
			laVal = value;
			TextFiller(i);
			break;						
		}
		i=i+20;	
	}
}
//Kan tänkamig att det är här som det är fel
function Round20(CurrVal)
{ 
	var topNr,botNr,NextVal;
	if(CurrVal > laVal){
		NextVal = parseInt(laVal)+20;
		topNr = NextVal-CurrVal;
		botNr = CurrVal-laVal;
		if(topNr > botNr){
		Glue(laVal);
		}
		else{
		Glue(NextVal);
		}
	}
	else{
		NextVal = parseInt(laVal)-20;
		topNr = laVal-CurrVal;
		botNr = CurrVal-NextVal;
		if(topNr < botNr){
			Glue(laVal)
		}
		else{
		Glue(NextVal);
		}
	}
}
```

Tacksam för alla svar!
Får passa på att ursäkta att koden är dåligt komenterad.

//Kim Sevandersson

Permalänk: https://www.webforum.nu/p/118277

## #2 — Peter S, 2004-12-18T14:37Z

Tja!

I onmousemove() finns några felaktigheter. Du försöker accessera en ***L**ength*\-egenskap hos Array som givetvis inte finns  ;)  (hint: ***l**ength*). I samma händelsehanterare skulle jag även tilldela *left*\-egenskapen "0px" istället för "0".

Hoppas att detta hjälper.

 :)

Permalänk: https://www.webforum.nu/p/1508779

## #3 — jazzil, 2004-12-18T14:56Z

Ska prova tack!

Permalänk: https://www.webforum.nu/p/1508784

## #4 — jazzil, 2004-12-18T14:58Z

Det fixade lite Felmeddelande som jag har kliat mig i huvvet för innan, tack för det :)
Men det värkar som om den buggen jag talar om bara existerar i FireFox

Permalänk: https://www.webforum.nu/p/1508785

## #5 — @nders, 2004-12-18T15:09Z

Hos mig (jag kör IE6), verkar den fungera, men själva "markören" försvinner när man börjar dra i den. :(

Permalänk: https://www.webforum.nu/p/1508787

## #6 — Peter S, 2004-12-18T15:19Z

Ser koden ut enligt nedan då?

```
document.onmousemove = function(e){
    var evt;
    output = null;
    if (active)
    {
		if (typeof(evt = window.event) != "undefined")
		{
			if(curL + (evt.screenX - lpos) <= Values[0]-1){
				ArrowDiv.style.left = "0";
			}
			else if(curL + (evt.screenX - lpos) >= (Values[Values.length-1]+1)){
				ArrowDiv.style.left = Values[Values.length-1] + "px";
			}
			else{
				ArrowDiv.style.left = curL + (evt.screenX - lpos);
			}
   	 	}
		else if (typeof(evt = e) != "undefined")
		{
			if(curL + (evt.pageX - lpos) <= Values[0]-1){
				ArrowDiv.style.left = "0px";
			}
			else if(curL + (evt.pageX - lpos) >= (Values[Values.length-1]+1)){
				ArrowDiv.style.left = Values[Values.length-1] + "px";
			}
			else{
				ArrowDiv.style.left = curL + (evt.pageX - lpos) + "px";
			}
    	}
    	output = replaceSubstring(ArrowDiv.style.left,"px", "");   	
		Glue(output);
	}
}
```

Om jag sparar ned din sida och testar den lokalt med dessa ändringar, uppstår inte problemet som du beskriver längre.

 :)

Permalänk: https://www.webforum.nu/p/1508789

## #7 — jazzil, 2004-12-18T15:34Z

Jag hade ändrat rätt, kanske javascriptet var chachat eller ngt.. 

aja .. tackar för all hjälp.

Permalänk: https://www.webforum.nu/p/1508791

---

Tråden på webben: https://www.webforum.nu/amne/javascript/118277-slider-i-javascript-hjälp-med-bugg
