webForumDet fria alternativet

Menyscript!

14 svar · 391 visningar · startad av Coccozz

CoccozzMedlem sedan apr. 20032 072 inlägg
#1

Tjo!
Har ett enkelt javascript gjort av någon här på wF på min sida. Nu behöver jag dock hjälp med att piffa upp detta lite.
Scriptet der ut såhär idag:

<SCRIPT LANGUAGE="JavaScript">
var aktivTD;

function klickaPa(objTD) {
    if (aktivTD) aktivTD.className="omarkerad"; //återställ
    objTD.className = "markerad";
    aktivTD = objTD;
}
</script>

Och cellen ser ut såhär:

<td width="14,3%" class="button" onClick="klickaPa(this)" style="width: 14%"></td>

Vill nu ha hjälp att skriva om denna koden så att den kan bestämma utifrån en sträng i asp vilken som skall vara markerad. För att detta skall fungera måste var och en av de SJU cellerna ha ett eget värde.
T.ex. kan den första cellen kallas MÅNDAG, den andra TISDAG osv.
Någon som vet hur man gör?

CoccozzMedlem sedan apr. 20032 072 inlägg
#2

Ingen som förstår vad jag menar?

jawbreakerMedlem sedan jan. 2003296 inlägg
#3

Gör en funktion som körs när sidan laddas...

function doOnLoad()
{
	var o = document.getElementById( "<%= aspString %>" );
	if ( o )
		klickaPa( o );
}

aspString i funktionen ovan är då en sträng som inte helt otippat kommer från ASP. Strängens innehåll är då tänkt att motsvara id:t på en av dina tabellceller som är klickbara.

Se till att funktionen körs när sidan laddats...

<body onload="doOnLoad();">

Tabellceller med id:

<td id="mandag" width="14,3%" class="button" onClick="klickaPa(this)" style="width: 14%"></td>
<td id="tisdag" width="14,3%" class="button" onClick="klickaPa(this)" style="width: 14%"></td>
CoccozzMedlem sedan apr. 20032 072 inlägg
#4

Nu vet jag inte om jag har missupfattat dig eller inte, för jag SUGER på js.
Det jag vill ha är en funktion där jag:
Kan skriva en if sats som säger att om Dagens datum stämmer med strängen monMonth så markeras cellen som har id:t Måndag!
Hur? Eller är det det du har visat. Jag begriper inte en js. ASP ska d vara :birp

jawbreakerMedlem sedan jan. 2003296 inlägg
#5

Jag tror att det vore bra om du kunde posta lite mer kod om det ska gå att ge dig någon kod som du kan använda rakt av. Dels lite mer html-kod (hur hela tabellen med kalendern eller vad det nu är ser ut), och dels väl valda delar av ASP-koden (den kod som innehåller datumjämförelserna m.m.).

CoccozzMedlem sedan apr. 20032 072 inlägg
#6

Nu ska vi se. ASP koden ser ut såhär:

<%
startdate=now
startdate=startdate-datepart("w", now(),2)+1

MonDay = DatePart("d", startdate+0)
TueDay = DatePart("d", startdate+1)
WedDay = DatePart("d", startdate+2)
ThuDay = DatePart("d", startdate+3)
FriDay = DatePart("d", startdate+4)
SatDay = DatePart("d", startdate+5)
SunDay = DatePart("d", startdate+6)

MonMonth = DatePart("m", startdate+0)
TueMonth = DatePart("m", startdate+1)
WedMonth = DatePart("m", startdate+2)
ThuMonth = DatePart("m", startdate+3)
FriMonth = DatePart("m", startdate+4)
SatMonth = DatePart("m", startdate+5)
SunMonth = DatePart("m", startdate+6)

MonYear = DatePart("yyyy", startdate+0)
TueYear = DatePart("yyyy", startdate+1)
WedYear = DatePart("yyyy", startdate+2)
ThuYear = DatePart("yyyy", startdate+3)
FriYear = DatePart("yyyy", startdate+4)
SatYear = DatePart("yyyy", startdate+5)
SunYear = DatePart("yyyy", startdate+6)
%>

Och HTML för tabellen:

    <table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; border-left-width:1; border-right-width:1; border-top-width:1; border-bottom-style:solid; border-bottom-width:1" bordercolor="#111111" width="100%" id="AutoNumber4">
      <tr>
        <td width="14,3%" class="button" onClick="klickaPa(this)" style="width: 14%">
        <p align="center" style="margin-top: 0; margin-bottom: 0"><a href="weekkalendinside.asp?dd=<%=MonDay%>&mm=<%=MonMonth%>&yy=<%=MonYear%>" class="byt">MÅNDAG</a></td>
        <td width="14,3%" class="button" onClick="klickaPa(this)" style="width: 14%">
        <p align="center" style="margin-top: 0; margin-bottom: 0"><a href="weekkalendinside.asp?dd=<%=TueDay%>&mm=<%=TueMonth%>&yy=<%=TueYear%>" class="byt">TISDAG</a></td>
        <td width="14,3%" class="button" onClick="klickaPa(this)" style="width: 14%">
        <p align="center" style="margin-top: 0; margin-bottom: 0"><a href="weekkalendinside.asp?dd=<%=WedDay%>&mm=<%=WedMonth%>&yy=<%=WedYear%>" class="byt">ONSDAG</a></td>
        <td width="14,3%" class="button" onClick="klickaPa(this)" style="width: 14%">
        <p align="center" style="margin-top: 0; margin-bottom: 0"><a href="weekkalendinside.asp?dd=<%=ThuDay%>&mm=<%=ThuMonth%>&yy=<%=ThuYear%>" class="byt">TORSDAG</a></td>
        <td width="14,3%" class="button" onClick="klickaPa(this)" style="width: 14%">
        <p align="center" style="margin top: 0; margin-bottom: 0"><a href="weekkalendinside.asp?dd=<%=FriDay%>&mm=<%=FriMonth%>&yy=<%=FriYear%>" class="byt">FREDAG</a></td>
        <td width="14,3%" class="button" onClick="klickaPa(this)" style="width: 14%">
        <p align="center" style="margin-top: 0; margin-bottom: 0"><a href="weekkalendinside.asp?dd=<%=SatDay%>&mm=<%=SatMonth%>&yy=<%=SatYear%>" class="byt">LÖRDAG</a></td>
        <td width="14,3%" class="button" onClick="klickaPa(this)">
        <p align="center" style="margin-top: 0; margin-bottom: 0"><a href="weekkalendinside.asp?dd=<%=SunDay%>&mm=<%=SunMonth%>&yy=<%=SunYear%>" target="inn" class="byt">SÖNDAG</a></td>
      </tr>
    </table>

Vad jag vill ha är en if sats som gör så att den aktuella dagen (dagens dag så att säga), markeras. Detta genom att jämföra datepart(dd, now) och MonDay, TueDay osv.
Den dagen det stämmer, den dagen skall sättas till markerad.
Till exempel datepart(dd, now)=18 FriDay=18 då skall cellen FREDAG vara markerad.
Vet att det skall gå eftersom jag haft ett sådant skript innan som byggde på det jag använder nu, men jag tog bort det av ren klantighet :(

CoccozzMedlem sedan apr. 20032 072 inlägg
#7

Eftersom jag suger på att förklara och ingen verkar förstå så försöker jag en sista gång till.
Vad jag vill ha är något liknande detta:

If MonDay = datepart("d", date) then set .mon = "klickaPa(this)"
If TueDay = datepart("d", date) then set .tue = "klickaPa(this)"
If WedDay = datepart("d", date) then set .wed = "klickaPa(this)"
If ThuDay = datepart("d", date) then set .thu = "klickaPa(this)"
If FriDay = datepart("d", date) then set .fri = "klickaPa(this)"
If SatDay = datepart("d", date) then set .sat = "klickaPa(this)"
If SunDay = datepart("d", date) then set .sun = "klickaPa(this)"

Jag vet att man inte kan göra så i java (eftersom det inte fungerade :p), därför vill jag ha eran hjälp. Nu tycker jag det borde framgå ganska klart vad jag menar.
Den dagen det stämmer, den dagens cell skall vara markerad.
Bifogar cellerna igen också:

<td id="mon" width="14,3%" class="button" onClick="klickaPa(this)" style="width: 14%" height="100">
        <p align="center" style="margin-top: 0; margin-bottom: 0"><a href="weekkalendinside.asp?dd=<%=MonDay%>&mm=<%=MonMonth%>&yy=<%=MonYear%>" target="inn" class="byt">MÅNDAG</a></td>
        <td id="tue" width="14,3%" class="button" onClick="klickaPa(this)" style="width: 14%" height="100">
        <p align="center" style="margin-top: 0; margin-bottom: 0"><a href="weekkalendinside.asp?dd=<%=TueDay%>&mm=<%=TueMonth%>&yy=<%=TueYear%>" target="inn" class="byt">TISDAG</a></td>
        <td id="wed" width="14,3%" class="button" onClick="klickaPa(this)" style="width: 14%" height="100">
        <p align="center" style="margin-top: 0; margin-bottom: 0"><a href="weekkalendinside.asp?dd=<%=WedDay%>&mm=<%=WedMonth%>&yy=<%=WedYear%>" target="inn" class="byt">ONSDAG</a></td>
        <td id="thu" width="14,3%" class="button" onClick="klickaPa(this)" style="width: 14%" height="100">
        <p align="center" style="margin-top: 0; margin-bottom: 0"><a href="weekkalendinside.asp?dd=<%=ThuDay%>&mm=<%=ThuMonth%>&yy=<%=ThuYear%>" target="inn" class="byt">TORSDAG</a></td>
        <td id="fri"width="14,3%" class="button" onClick="klickaPa(this)" style="width: 14%" height="100">
        <p align="center" style="margin top: 0; margin-bottom: 0"><a href="weekkalendinside.asp?dd=<%=FriDay%>&mm=<%=FriMonth%>&yy=<%=FriYear%>" target="inn" class="byt">FREDAG</a></td>
        <td id="sat" width="14,3%" class="button" onClick="klickaPa(this)" style="width: 14%" height="100">
        <p align="center" style="margin-top: 0; margin-bottom: 0"><a href="weekkalendinside.asp?dd=<%=SatDay%>&mm=<%=SatMonth%>&yy=<%=SatYear%>" target="inn" class="byt">LÖRDAG</a></td>
        <td id="sun" width="14,3%" class="button" onClick="klickaPa(this)" height="100">
        <p style="margin-top: 0; margin-bottom: 0" align="center"><a href="weekkalendinside.asp?dd=<%=SunDay%>&mm=<%=SunMonth%>&yy=<%=SunYear%>" target="inn" class="byt">SÖNDAG</a></td>

Hoppas inga oklarigheter råder nu!

jawbreakerMedlem sedan jan. 2003296 inlägg
#8

Testa detta...

function doOnLoad()
{
	var o = document.getElementById( "d<%= DatePart("d", now()) %>" );
	if ( o )
		klickaPa( o );
}
<body onload="doOnLoad();">
<td id="d<%= MonDay %>" width="14,3%" class="button" onClick="klickaPa(this)" style="width: 14%" height="100">
<p align="center" style="margin-top: 0; margin-bottom: 0"><a href="weekkalendinside.asp?dd=<%=MonDay%>&mm=<%=MonMonth%>&yy=<%=MonYear%>" target="inn" class="byt">MÅNDAG</a></td>
<td id="d<%= TueDay %>" width="14,3%" class="button" onClick="klickaPa(this)" style="width: 14%" height="100">
<p align="center" style="margin-top: 0; margin-bottom: 0"><a href="weekkalendinside.asp?dd=<%=TueDay%>&mm=<%=TueMonth%>&yy=<%=TueYear%>" target="inn" class="byt">TISDAG</a></td>
<td id="d<%= WedDay %>" width="14,3%" class="button" onClick="klickaPa(this)" style="width: 14%" height="100">
<p align="center" style="margin-top: 0; margin-bottom: 0"><a href="weekkalendinside.asp?dd=<%=WedDay%>&mm=<%=WedMonth%>&yy=<%=WedYear%>" target="inn" class="byt">ONSDAG</a></td>
<td id="d<%= ThuDay %>" width="14,3%" class="button" onClick="klickaPa(this)" style="width: 14%" height="100">
<p align="center" style="margin-top: 0; margin-bottom: 0"><a href="weekkalendinside.asp?dd=<%=ThuDay%>&mm=<%=ThuMonth%>&yy=<%=ThuYear%>" target="inn" class="byt">TORSDAG</a></td>
<td id="d<%= FriDay %>"width="14,3%" class="button" onClick="klickaPa(this)" style="width: 14%" height="100">
<p align="center" style="margin top: 0; margin-bottom: 0"><a href="weekkalendinside.asp?dd=<%=FriDay%>&mm=<%=FriMonth%>&yy=<%=FriYear%>" target="inn" class="byt">FREDAG</a></td>
<td id="d<%= SatDay %>" width="14,3%" class="button" onClick="klickaPa(this)" style="width: 14%" height="100">
<p align="center" style="margin-top: 0; margin-bottom: 0"><a href="weekkalendinside.asp?dd=<%=SatDay%>&mm=<%=SatMonth%>&yy=<%=SatYear%>" target="inn" class="byt">LÖRDAG</a></td>
<td id="d<%= SunDay %>" width="14,3%" class="button" onClick="klickaPa(this)" height="100">
<p style="margin-top: 0; margin-bottom: 0" align="center"><a href="weekkalendinside.asp?dd=<%=SunDay%>&mm=<%=SunMonth%>&yy=<%=SunYear%>" target="inn" class="byt">SÖNDAG</a></td>
CoccozzMedlem sedan apr. 20032 072 inlägg
#9

Det fungerar så tillvida att jag inte får något felmeddelande. Dock blir inte någon cell markerad :/
Vad kan jag ha gjort för fel?
Kopierade texten rakt av. Allt fungerar superbra, men som sagt, ingen cell markeras?!?! :o

@ndersMedlem sedan juni 200032 969 inlägg
#10

Hur ser den färdiga koden ut när den når webbläsaren då?

CoccozzMedlem sedan apr. 20032 072 inlägg
#11

Såhär ser det hela ut:
(Nedre halvan är ointressant, tror jag)

<script></script><script></script><script></script><script></script><script></script><script></script><script>klickaPa(document.getElementById('sun'));
</script>
<SCRIPT LANGUAGE="javascript">
function doOnLoad()
{
	var o = document.getElementById( "d&lt;%= DatePart("d", now()) %&gt;" );
	if ( o )
		klickaPa( o );
}
</script>

<html>
<head>
<meta http-equiv="Content-Language" content="sv">

<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>ULRiCEHAMN.tk</title>

		<link rel="stylesheet" type="text/css" href="style.css" title="normal">
		<link rel="alternate stylesheet" type="text/css" href="/css/stylesheet_AdaptSite.css" title="anpassad">
	

<SCRIPT LANGUAGE="JavaScript">
var aktivTD;

function klickaPa(objTD) {
    if (aktivTD) aktivTD.className="omarkerad"; //återställ
    objTD.className = "markerad";
    aktivTD = objTD;
}
</script>
<style type="text/css">
<!--
body { overflow: hidden;}
-->
</style>
</head>
<body style="background-color: #FFFFFF; background-image:url('')" link="#000000" vlink="#000000" alink="#000000" onload="doOnLoad();" leftmargin="0" topmargin="0">
<table border="0" cellpadding="4" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" id="AutoNumber1" height="570">
  <tr>
      <td width="75%" height="562" valign="top" style="padding-left: 4; padding-right: 4; padding-top: 1; padding-bottom: 1">
    <div id="kalend" style="overflow:auto; width:625; height:307">
    <table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse; border-width: 0" bordercolor="#111111" width="100%" id="AutoNumber3">
      <tr>
        <td width="100%" style="border-left-width: 0; border-right-width: 0; border-top-width: 0; border-bottom-style: dotted; border-bottom-width: 1">
    <table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; border-left-width:1; border-right-width:1; border-top-width:1; border-bottom-style:solid; border-bottom-width:1" bordercolor="#111111" width="100%" id="AutoNumber4" height="12">
      <tr>
        <td id="d14" width="14,3%" class="button" onClick="klickaPa(this)" style="width: 14%" height="100">
        <p align="center" style="margin-top: 0; margin-bottom: 0"><a href="weekkalendinside.asp?dd=14&mm=3&yy=2005" target="inn" class="byt">MÅNDAG</a></td>
        <td id="d15" width="14,3%" class="button" onClick="klickaPa(this)" style="width: 14%" height="100">
        <p align="center" style="margin-top: 0; margin-bottom: 0"><a href="weekkalendinside.asp?dd=15&mm=3&yy=2005" target="inn" class="byt">TISDAG</a></td>
        <td id="d16" width="14,3%" class="button" onClick="klickaPa(this)" style="width: 14%" height="100">
        <p align="center" style="margin-top: 0; margin-bottom: 0"><a href="weekkalendinside.asp?dd=16&mm=3&yy=2005" target="inn" class="byt">ONSDAG</a></td>
        <td id="d17" width="14,3%" class="button" onClick="klickaPa(this)" style="width: 14%" height="100">
        <p align="center" style="margin-top: 0; margin-bottom: 0"><a href="weekkalendinside.asp?dd=17&mm=3&yy=2005" target="inn" class="byt">TORSDAG</a></td>
        <td id="d18"width="14,3%" class="button" onClick="klickaPa(this)" style="width: 14%" height="100">
        <p align="center" style="margin top: 0; margin-bottom: 0"><a href="weekkalendinside.asp?dd=18&mm=3&yy=2005" target="inn" class="byt">FREDAG</a></td>
        <td id="d19" width="14,3%" class="button" onClick="klickaPa(this)" style="width: 14%" height="100">
        <p align="center" style="margin-top: 0; margin-bottom: 0"><a href="weekkalendinside.asp?dd=19&mm=3&yy=2005" target="inn" class="byt">LÖRDAG</a></td>
        <td id="d20" width="14,3%" class="button" onClick="klickaPa(this)" height="100">
        <p style="margin-top: 0; margin-bottom: 0" align="center"><a href="weekkalendinside.asp?dd=20&mm=3&yy=2005" target="inn" class="byt">SÖNDAG</a></td>
      </tr>
    </table>
    <p style="margin-top: 0; margin-bottom: 0">
    <iframe name="inn" width="100%" marginwidth="1" marginheight="1" border="0" frameborder="0" src="start.asp" scrolling="no">
    Din webbläsare stöder inte inbäddade ramar, eller så är den konfigurerad att inte visa inbäddade ramar.</iframe>
    <br>
        </td>
      </tr>
      <tr>
        <td width="100%" style="border-left-width: 0; border-right-width: 0; border-top-width: 0; border-bottom-style: dotted; border-bottom-width: 1">
    <p align="center" style="margin-top: 0; margin-bottom: 0">
    <font face="Verdana" style="font-size:"3"><b><font size="2">Händer i Veckan</font></b></font></p>
    <p align="center" style="margin-top: 0; margin-bottom: 0">&nbsp;</p>
    <p align="left" style="margin-top: 0; margin-bottom: 0">
    &nbsp; Ifall du känner att det inte räcker med att veta vad som händer idag 
    så har du hittat helt rätt. Här ser du vad som har hänt, händer och kommer 
    att hända under veckan som pågår.</p>
    <p align="left" style="margin-top: 0; margin-bottom: 0">
    &nbsp; Välj bara dag i listan nedan. Dagar som saknar länk är dagar då ingen 
    information om något speciellt evangemang finns. Vet du om något evangemang 
    som inte står med så tveka inte att skicka in det via länken &quot;Tipsa&quot; i menyn 
    ovan. Ifall så önskas publiceras namn tillsammans med ett tack. Även tips och 
    kritik är välkommen under &quot;Tipsa&quot;.</p>
    <p align="left" style="margin-top: 0; margin-bottom: 0">
    <font size="2">&nbsp; </font></p>
    <p align="left" style="margin-top: 0; margin-bottom: 0">
    &nbsp; Hoppas ni hittar vad ni söker //</font></p>
    <p align="left" style="margin-top: 0; margin-bottom: 0">
    &nbsp;</p>
        </td>
      </tr>
    </table>
    </td>
    </div>
    </table>
    </td>
    </tr>
    

  </table>
</body></html>
@ndersMedlem sedan juni 200032 969 inlägg
#12
  1. Varför har du massor av tomma script-taggar överst? Bort!
  2. Varför kör du två script som ska göra samma sak? Bestäm dig för vilket du ska använda! Ska du använda jawbreakers, släng bort allt annat skräp.
  3. Varför är < och > html-kodat i jawbreakers funktion? Om du inte får ut ditt asp-värde där så är det inte så konstigt att det inte fungerar.

Ska du använda den koden jag gav dig (som jag antar är den som resulterat i alla tomma script-taggar), så får du se till att den inte körs förrän allt annat på sidan har laddats, dvs: lägg den sist, eller kör den onload. Och bort med alla tomma script-taggar!!! Mitt råd är dock att du använder jawbreaker-funktionen.

CoccozzMedlem sedan apr. 20032 072 inlägg
#13

Oj, såg visst att det bidde lite fel på taggarna där.
Har nu sällat mig till Jawbreakers marker och får därmed ut följande rader:

<SCRIPT LANGUAGE="javascript">
function doOnLoad()
{
	var o = document.getElementById( "d21;" );
	if ( o )
		klickaPa( o );
}
</script>

Så långt, allt fint :D
Även cellerna verkar stämma:

<td id="d21" width="14,3%" class="button" onClick="klickaPa(this)" style="width: 14%" height="100">

Men det blir fortfarande inte markerat någon cell :(
Varför?

jawbreakerMedlem sedan jan. 2003296 inlägg
#14
var o = document.getElementById( "d21;" );

borde vara

var o = document.getElementById( "d21" );

Det vill säga, det har smugit sig en ett semikolon för mycket i din kod. Bort med det.

CoccozzMedlem sedan apr. 20032 072 inlägg
#15

Mucho gracias. (elr hur det kan tänkas stavas :p)
Nu fungerar det superbt.
Tack @nders och jawbreaker för all hjälp :D

263 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
126 ms — hämta statistik (db)
135 ms — hämta tråd, inlägg och bilagor (db)