webForumDet fria alternativet

"Få med sig" div-id?

7 svar · 286 visningar · startad av Jesper T

Jesper TMedlem sedan nov. 20017 144 inlägg
#1

I mitt lilla "högerklicksmenyscript" så skulle jag vilja få med mig div id:et i länkarna (querystrings). Alltså klickar jag på div 1, så skall detta id stå med i länken/arna i högerklicksmenyn. Hur gör jag det?

<style>
.hSmellCell {
   font-family:arial;
   background-color:#cccccc;
   font-size:10pt;
   cursor:default;
   margin:1px;
}
.hSmellOver {
   font-family:arial;
   background-color:#999999;
   font-size:10pt;
   cursor:default;
   margin:1px;
}
</style>

<script language="javascript">
<!--
function tMenu(a) {
var X = event.clientX;
X += document.body.scrollLeft;
var Y = event.clientY;
Y += document.body.scrollTop;
hSmellMenu.style.left=X;
hSmellMenu.style.top=Y;
 if(a) {
   hSmellMenu.style.display = 'block';
 } else {
   hSmellMenu.style.display = 'none';
 }
return false;
}
function cColor(o) {
 if (o.className == 'hSmellOver') {
   o.className = 'hSmellCell';
 } else {
   o.className = 'hSmellOver';
 }
}

function goMenu(str) {
 window.location.href = str;
}
//-->
</script>

</head>
<Body> 
<div oncontextmenu="return tMenu(true);" onClick="tMenu(false);" id="1" style="border:1px solid blue;width:200px; height:20px;">1</div>
<div oncontextmenu="return tMenu(true);" onClick="tMenu(false);" id="2" style="border:1px solid blue;width:200px; height:20px;">2</div>
<div oncontextmenu="return tMenu(true);" onClick="tMenu(false);" id="3" style="border:1px solid blue;width:200px; height:20px;">3</div>

<div id="hSmellMenu" style="border:1px groove #999999;display:none;position:absolute;background-color:#cccccc;margin:1px;">
  
    <div class="hSmellCell" onMouseOver="cColor(this);" onMouseOut="cColor(this);" onClick="javascript:goMenu('/htmlp.asp')"> 
      html</div>
 
    <div class="hSmellCell" onMouseOver="cColor(this);" onMouseOut="cColor(this);" onClick="javascript:goMenu('http://www.dhtml.net')"> 
      dhtml</div>
	  
</div>

Tips?

Peter SMedlem sedan dec. 20025 483 inlägg
#2

Skicka med en till in-parameter till funktionen tMenu(), d.v.s. en referens till objektet i fråga:

...
function tMenu(a, [b]o[/b]) {
[b]alert(o);[/b]
var X = event.clientX;
X += document.body.scrollLeft;
var Y = event.clientY;
Y += document.body.scrollTop;
hSmellMenu.style.left=X;
hSmellMenu.style.top=Y;
 if(a) {
   hSmellMenu.style.display = 'block';
 } else {
   hSmellMenu.style.display = 'none';
 }
return false;
}

...
<div oncontextmenu="return tMenu(true, [b]this.id[/b])...
...

:)

Jesper TMedlem sedan nov. 20017 144 inlägg
#3

...men, men, hur får jag "ner" aktuell div:s id till högerklicksmenyn?
om jag skriver:<script>document.write(objId);</script>
Så står det att variabeln är odefinerad.

Så här skulle jag önska att det såg ut:

Peter SMedlem sedan dec. 20025 483 inlägg
#4

Vet inte riktigt om det är så här du menar, men...

<script language="javascript">
<!--

var menu1 = ["Redigera","Radera"];

function tMenu(a, o) {

var hSmellMenu = document.getElementById("hSmellMenu");
var subs = hSmellMenu.getElementsByTagName("div");

for(var i=0; i<subs.length; i++){
	subs[i].innerHTML = menu1[i] + " " + o;
}

var X = event.clientX;
X += document.body.scrollLeft;
var Y = event.clientY;
Y += document.body.scrollTop;
hSmellMenu.style.left=X;
hSmellMenu.style.top=Y;
 if(a) {
   hSmellMenu.style.display = 'block';
 } else {
   hSmellMenu.style.display = 'none';
 }
return false;
}
function cColor(o) {
 if (o.className == 'hSmellOver') {
   o.className = 'hSmellCell';
 } else {
   o.className = 'hSmellOver';
 }
}

function goMenu(str) {
 window.location.href = str;
}
//-->
</script>
...
<div oncontextmenu="return tMenu(true, this.id);" onClick="tMenu(false);" id="1" style="border:1px solid blue;width:200px; height:20px;">1</div>
<div oncontextmenu="return tMenu(true, this.id);" onClick="tMenu(false);" id="2" style="border:1px solid blue;width:200px; height:20px;">2</div>
<div oncontextmenu="return tMenu(true, this.id);" onClick="tMenu(false);" id="3" style="border:1px solid blue;width:200px; height:20px;">3</div>

<div id="hSmellMenu" style="border:1px groove #999999;display:none;position:absolute;background-color:#cccccc;margin:1px;">
  
    <div class="hSmellCell" onMouseOver="cColor(this);" onMouseOut="cColor(this);" onClick="javascript:goMenu('/htmlp.asp')"> 
      Redigera</div>
 
    <div class="hSmellCell" onMouseOver="cColor(this);" onMouseOut="cColor(this);" onClick="javascript:goMenu('http://www.dhtml.net')"> 
      Radera</div>
	  
</div>
...

:)

Jesper TMedlem sedan nov. 20017 144 inlägg
#5

Nästan, länkarna skall ha en querystring med motsvarande id.
ex lank.asp?Id=1

Peter SMedlem sedan dec. 20025 483 inlägg
#6

Så här?

...
for(var i=0; i<subs.length; i++){
	subs[i].innerHTML = menu1[i] + " " + o;
	subs[i].onclick = function(){
		location.href = "lank.asp?id=" + o;
	}
}
...

:)

Jesper TMedlem sedan nov. 20017 144 inlägg
#7

Aaaa, men då får båda länkarna(redigera,radera) samma url ju :(

Peter SMedlem sedan dec. 20025 483 inlägg
#8

Testa följande:

...
for(var i=0; i<subs.length; i++){
	subs[i].innerHTML = menu1[i] + " " + o;
	subs[i].onclick = function(){
		goMenu(this.innerHTML.toLowerCase().substring(0, this.innerHTML.indexOf(" "))+".asp?id="+o);
	}
}
...

:)

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