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.
I onmousemove() finns några felaktigheter. Du försöker accessera en Length-egenskap hos Array som givetvis inte finns (hint: length). I samma händelsehanterare skulle jag även tilldela left-egenskapen "0px" istället för "0".
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