webForumDet fria alternativet

byta ut text i onclick vid tryck på knapp

JavaScriptur Javascript

14 svar · 477 visningar · startad av Addeladde

Medlem sedan jan. 20013 406 inlägg
Frågan#1

Varför fungerar inte denna kodsnutt:

<input type="button" onclick="testdiv.onclick='parent.location.href='http://www.jolian.com''">

<DIV id="testdiv" onclick="parent.location.href='http://www.microsoft.com'">Test</div>

Jag vill att microsoft adressen ska bytas ut mot jolian adressen

Medlem sedan sep. 2002100 inlägg
#2

testa den här:

<input type="button" onclick="document.getElementById("testdiv").onclick='parent.location.href='http://www.jolian.com''">

<DIV id="testdiv" onclick="parent.location.href='http://www.microsoft.com'">Test</div>

Medlem sedan jan. 20013 406 inlägg
#3

Funkar inte

Medlem sedan juni 20004 308 inlägg
#4

Så här ser det ut. Men tyvärr verkar det inte stödjas av IE än, bara Mozilla.

<script language="JavaScript" type="text/javascript">
function setonClickUrl(id,url){
	document.getElementById(id).setAttribute("onclick","parent.location.href='"+url+"'");
}
</script>
<form>
<input type="button" onclick="setonClickUrl('testdiv','http://www.jolian.com')">
</form>
<DIV id="testdiv" onclick="parent.location.href='http://www.microsoft.com'">Test</div>

(Det blev så många citat-tecken så jag lade det i en egen funktion.)

Red. funktionen setAttribute() fungerar även i IE, men du verkar inte kunna mata den med något annat än handlers, alltså inga argument.

Medlem sedan jan. 20013 406 inlägg
#5

Okej vad tråkigt! Trodde microsoft var ganska bra på att komma med nya smarta funktioner.

Här är en kodsnutt det jag vill är att kunna klicka på länken <a>
Men det går inte fattar inte varför?

Om det är någon som kan lösa det på något sätt att jag kan byta ut länken i contextmenyn och att de går att klicka på så är jag väldigt tacksam.

<DIV ID="oContextHTML" STYLE="display:none;">
     <DIV onmouseover="this.style.background='gold';"  onmouseout="this.style.background='#e4e4e4';">    
	    <a href="www.jolian.se">Jolian</a>
		</div>
	 <DIV onmouseover="this.style.background='gold'" onmouseout="this.style.background='#e4e4e4'">
    <SPAN onclick="parent.location.href='http://search.microsoft.com'"> Sök</SPAN> 
  </DIV>
</DIV>
Medlem sedan juni 20004 308 inlägg
#6

Come again?

Förutom att det saknas "http://" i länken tyckar jag det funkar...?

Medlem sedan jan. 20013 406 inlägg
#7

För mig är det omöjligt att klicka på länken så länge Style="display:none" finns. När jag sätter den till vissble så funkar det men då försvinner ju hela iden med att det ska vara en context meny

Medlem sedan juni 20004 308 inlägg
#8

Eftersom du säger context-meny antar jag att du vill ha den där muspekaren är. Då får du göra <div>'en till ett lager och då ändra på attributet visibility för att göra den synlig;

<body oncontextmenu="document.getElementById('oContextHTML').style.top=Ymouse; document.getElementById('oContextHTML').style.left=Xmouse; document.getElementById('oContextHTML').style.visibility='visible'; return false;">
<script language="JavaScript" type="text/javascript">
var Xmouse=0; var Ymouse=0;
function MoveHandler(evnt) {
	if(document.all){
		Xmouse = window.event.x+document.body.scrollLeft;
		Ymouse = window.event.y+document.body.scrollTop;
	} else if(document.getElementById) {
		Xmouse = evnt.pageX;
		Ymouse = evnt.pageY;
	}
}
document.onmousemove = MoveHandler;
</script>

<DIV ID="oContextHTML" STYLE="position:absolute;visibility:hidden;">
     <DIV onmouseover="this.style.background='gold';"  onmouseout="this.style.background='#e4e4e4';">    
	    <a href="www.jolian.se">Jolian</a>
		</div>
	 <DIV onmouseover="this.style.background='gold'" onmouseout="this.style.background='#e4e4e4'">
    <SPAN onclick="parent.location.href='http://search.microsoft.com'"> Sök</SPAN> 
  </DIV>
</DIV>
Medlem sedan jan. 20013 406 inlägg
#9

Tack nu har jag löst det.

Det jag ville ha var alltså ett script som visade en contextmenu när man klickade på en länk som radades upp från endatabas.

Länken i contextmenyn skulle då ändras för varje ny länk som databasen radade upp. Så att om man högerklicka på exempelvis länk 1 så skulle länken redigera i contextmenyn bytas ut till egenskaper.asp?id<%rs("id")%>

Tack för hjälpen! Postar den färdiga koden här imorgon om det är någon som vill titta på den.

Medlem sedan jan. 20013 406 inlägg
#10

Hej Jag har min kod nu som fungerar nästan som jag vill. En sak till bara! Hur gör jag så att det inte går att klicka på höger musknapp och få upp den vanliga microsoft menyn.

Jag vill inte få upp msmenyn på sidan eller få upp den när jag trycker på högermusknapp i contextmenyn.

Pröva själv så får du se.
Här är koden:

<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script language="JavaScript" type="text/javascript">
var Xmouse=0; var Ymouse=0;
function MoveHandler(evnt) {
	if(document.all){
		Xmouse = window.event.x+document.body.scrollLeft;
		Ymouse = window.event.y+document.body.scrollTop;
	} else if(document.getElementById) {
		Xmouse = evnt.pageX;
		Ymouse = evnt.pageY;
	}
}
document.onmousemove = MoveHandler;
</script>
<style type="text/css">
<!--
.egenskaper {
	font-family: Arial, Helvetica, sans-serif;
	font-size: 11px;
	font-style: normal;
	font-weight: normal;
	color: #000000;
	text-decoration: none;
	background-color: #D6D6D6;
	border-top-width: 0px;
	border-right-width: 0px;
	border-bottom-width: 1px;
	border-left-width: 0px;
	border-top-style: solid;
	border-right-style: solid;
	border-bottom-style: solid;
	border-left-style: solid;
	border-top-color: #000000;
	border-right-color: #000000;
	border-bottom-color: #000000;
	border-left-color: #000000;
}
.rutamenu {
	border-top-width: 1px;
	border-right-width: 1px;
	border-bottom-width: 0px;
	border-left-width: 1px;
	border-top-style: solid;
	border-right-style: solid;
	border-bottom-style: solid;
	border-left-style: solid;
	border-top-color: #000000;
	border-right-color: #000000;
	border-bottom-color: #000000;
	border-left-color: #000000;
}
-->
</style>
<style type="text/css">
<!--
.lank {
	font-family: Arial, Helvetica, sans-serif;
	font-size: 11px;
	font-style: normal;
	font-weight: normal;
	color: #000000;
	text-decoration: none;
}
-->
</style>
</head>
<body onclick="document.getElementById('oContextHTML').style.visibility='hidden'">
<DIV class="rutamenu" ID="oContextHTML" STYLE="position:absolute; visibility:hidden; width: 150;"> 
    <DIV align="left" height="18" class="egenskaper" onmouseover="this.style.background='gold';" onmouseout="this.style.background='#D6D6D6';"> 
    <table width="150" border="0" cellspacing="0" cellpadding="0"><tr style="cursor:hand"> <a border="0" class="lank" name="visaSida" href="www.jolian.se"><td width="19" height="18"><img height="18" border="0" src="admin/bilder/magnify.gif"></td><td width="131" height="18" class="lank">&nbsp;Visa Sida</td></a></tr></table>
	</DIV>
  <DIV align="left" height="18" class="egenskaper" onmouseover="this.style.background='gold';" onmouseout="this.style.background='#D6D6D6';"> 
    <table width="150" border="0" cellspacing="0" cellpadding="0"><tr style="cursor:hand"> <a border="0" class="lank" name="tabort" href="www.jolian.se"><td width="19" height="18"><img height="18" border="0" src="admin/bilder/radera.gif"></td><td width="131" height="18" class="lank">&nbsp;Ta bort sida</td></a></tr></table>
	</DIV>
  
</DIV>
<p>&nbsp;</p>
<%
dim raknare
raknare = 1
do until raknare = 4 %>
<p onmouseover="tabort.href='http://www.idg.se<%=raknare%>'" oncontextmenu="document.getElementById('oContextHTML').style.top=Ymouse; document.getElementById('oContextHTML').style.left=Xmouse; document.getElementById('oContextHTML').style.visibility='visible'; return false;">Klicka h&auml;r</p>
<% raknare = raknare + 1 
loop %>
</body>
</html>
Medlem sedan juni 20004 308 inlägg
#11

För att gömma context-menyn returnerar du false från eventet oncontextmenu i <body>-taggen (se mitt exempel). Var dock medveten om att det är många (mig själv inräknad) som ogillar denna form av funktionsstympning av webbläsare.

Medlem sedan jan. 20013 406 inlägg
#12

Jag skulle inte gilla den här typen av navigering heller! Men det är ett smidigt sätt att få upp en meny på vad man vill göra med en produkt eller fil i ett administrationsgränssnitt.

Medlem sedan jan. 20013 406 inlägg
#13

När man radar upp från databasen så funkar det inte att klicka högerklicka på de två första länkarna? Alla andra funkar och efter att man har klickat på dem så går det att klicka på de två första.

bifogar koden nedan

<table>
  <% DO UNTIL sidorRS.EOF %>
  <tr>
    <td><img src="../bilder/doc.gif" border="0" height="18"></td>
    <td><a name="<%=sidorRS( "sida_id" )%>" class="fillista" onmouseover="tabort.href='http://localhost/admin/sidor/sidhanterare.asp?del=1&sidaID=<%=sidorRS("sida_id")%>'" oncontextmenu="document.getElementById('oContextHTML').style.top=Ymouse; document.getElementById('oContextHTML').style.left=Xmouse; document.getElementById('oContextHTML').style.visibility='visible'; return false;" href="#"><%=sidorRS( "sida_titel" )%></a></td>
  </tr>
  <%
    sidorRS.MoveNext
    Loop 
  %>
</table>
Medlem sedan juni 20004 308 inlägg
#14

Titta på html-koden som kommer fram till webbläsaren. Att bara titta på ASP-koden säger ingenting om e.v. fel i datakällan som ligger till grund för sidan. Jämför den kod som genereras för de 2 första länkarna med den som genereras för de andra.

Medlem sedan jan. 20013 406 inlägg
#15

Det har jag redan gjort och den är exakt samma.
Det konstiga är att när jag ändrade min contextmeny så att den inte innehöll någon tabell så löste sig allt. Konstigt!

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