Avatar billede set Nybegynder
03. juli 2015 - 20:10 Der er 6 kommentarer og
1 løsning

Højre klik i tabel celle

Hej
er der nogen der har en løsning til hvordan man kan højre klikke i en celle i en tabel, det kan være en almindelig tabel eller en asp:table, som man derefter kan gøre noget med.
f. eks. når jeg højre klikker så skifter baggrundsfarven i cellen.
jeg kan bruge funktionen onClick i cellen men den registrerer ikke højre klik.
jeg bruger C# som sprog.
Avatar billede set Nybegynder
13. juli 2015 - 22:00 #2
Nu har jeg prøvet dette link, men kan stadig ikke få det til at virke.
jeg har brugt flg.

if (tbl != null) {
for (var i = 0; i < tbl.rows.length; i++) {
    for (var j = 0; j < tbl.rows[i].cells.length; j++)
   
  tbl.rows[i].cells[j].onclick = function () { getval(this);};
  }
}

function getval(cel) {
var x = document.getElementById("Table1").cells;
var nr = cel.innerHTML;

  x[nr - 1].bgColor = "green";
 
  alert("du har klikket på celle nr. " + cel.innerHTML);

}

dette virker på venstre klik på cellen.
jeg har prøvet at ændre på koden flere gange for at den skal registrere højre klik uden held, så hvad gør jeg forkert.
Avatar billede keysersoze Guru
14. juli 2015 - 08:19 #3
Så vidt jeg kan se benytter du ikke rigtig noget af det der foreslås i linket - du har bare sat en normal onclick?
Avatar billede set Nybegynder
14. juli 2015 - 16:07 #4
Hej igen
Så lykkedes det at kunne højre klikke i en tabelcelle ud fra denne kode:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Lotto.aspx.cs" Inherits="LottoProgram.LottoClass" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<title>Find table cell value on cell (table) click using JavaScript</title>

</head>
<body>
    <form id="form1" runat="server">
        <div>
            <h3>Table Example, constructed programmatically</h3>
            <asp:Label ID="Label1" runat="server" Text="LOTTO">LOTTO</asp:Label>

            <asp:Table ID="Table1"
                GridLines="Both"
                HorizontalAlign="Center"
                Font-Names="Verdana"
                Font-Size="16pt"
                CellPadding="15"
                CellSpacing="10"
                runat="server"
                Style="cursor: pointer;"
                BorderWidth="3px" />
            <br />
        </div>
    </form>

    <script type="text/javascript">
        var tbl = document.getElementById("Table1");
        var button;
        var x = document.getElementById("Table1").cells;


        window.oncontextmenu = function () {

            return false;    // cancel default menu
        }

        if (tbl != null) {
            for (var i = 0; i < tbl.rows.length; i++) {
                for (var j = 0; j < tbl.rows[i].cells.length; j++)

                    tbl.rows[i].cells[j].onclick = function () { getval(this); };
            }
        }

        if (tbl != null) {
            for (var i = 0; i < tbl.rows.length; i++) {
                for (var j = 0; j < tbl.rows[i].cells.length; j++)

                    tbl.rows[i].cells[j].oncontextmenu = function () { getval(this); };
            }
        }

        function getval(cel) {
            var x = document.getElementById("Table1").cells;
            var nr = cel.innerHTML;

            WhichButton(event);

            if (button == 1) {

                x[nr - 1].bgColor = "green";
            }
            else if (button == 3) {
                x[nr - 1].bgColor = "red";
            }
        }

        function WhichButton(event) {
            // all browsers except IE before version 9

            if ('which' in event) {
                switch (event.which) {
                    case 1:
                        //alert("Left button is pressed");
                        return button = 1;
                        break;
                    case 2:
                        return button = 2;
                        //alert("Middle button is pressed");
                        break;
                    case 3:
                        //alert("Right button is pressed");
                        return button = 3;
                        break;
                }
            }
            else {
                // Internet Explorer before version 9
                if ('button' in event) {
                    var buttons = "";
                    if (event.button & 1) {
                        buttons += "left";
                    }
                    if (event.button & 2) {
                        if (buttons == "") {
                            buttons += "right";
                        }
                        else {
                            buttons += " + right";
                        }
                    }
                    if (event.button & 4) {
                        if (buttons == "") {
                            buttons += "middle";
                        }
                        else {
                            buttons += " + middle";
                        }
                    }
                    alert("The following buttons are pressed: " + buttons);
                }
            }
        }
    </script>
</body>
</html>


jeg bruger det samme loop til at finde den enkelte celle når jeg klikker i tabeller.

ved onclick = venstre klik.
ved oncontextmenu = højre klik samtidig med at jeg har slået  window.oncontextmenu fra.

mange tak for hjælpen.
Avatar billede set Nybegynder
17. juli 2015 - 22:45 #5
Ups

jeg gjorde hvis forkert med hensyn til svar.

Det er dig der skal lægge et svar så du kan få point.
Avatar billede keysersoze Guru
17. juli 2015 - 23:38 #6
svar
Avatar billede set Nybegynder
18. juli 2015 - 09:14 #7
Værsgo'
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester