Avatar billede keepy Seniormester
13. august 2018 - 10:20 Der er 10 kommentarer og
1 løsning

HTML JAVA Script

Hej

Jeg har lavet en tabel men den Cell button, jeg vil gerne have at når jeg klikker på knappen at jeg får book-title vist i en alert box.
Men det virker ikke det jeg har fået lavet, jeg ved dog jeg kommer ned i functionen for dernede kan jeg skifte farve på min knap :o)

Håber i kan guide mig lidt.
<!DOCTYPE html>
<html lang="en">
<head>
    <title>Table</title>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1">

    <!-- Add icon library -->
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
    <link rel="stylesheet" type="text/css" href="css/TableStyle.css">
</head>
<body>
    <table id=table>
        <!--<table>-->
        <caption>Design and Front-End Development Books</caption>
        <thead>
            <tr>
                <th scope="col" colspan="1">Item</th>
                <th scope="col">Availability</th>
                <th scope="col">Qty</th>
                <th scope="col">Price</th>
                <th scope="col">Edit</th>
            </tr>
        </thead>
        <tbody>
            <tr>
                <td id="book-title">
                    <strong class="book-title" >Don&#8217;t Make Me Think</strong>
                    <span class="text-offset">by Steve Krug</span>
                </td>
                <td class="item-stock">In Stock</td>
                <td class="item-qty">1</td>
                <td class="item-price">$30.02</td>
                <td><button name='btnEdit' class='btnEdits' style="vertical-align:middle" onclick="btn1Call(event,this);"><span>Edit </span></button></td>
            </tr>
            <tr>
                <td id="book-title">
                    <strong class="book-title" >A Project Guide to UX Design</strong>
                    <span class="text-offset">by Russ Unger &#38; Carolyn Chandler</span>
                </td>
                <td class="item-stock">In Stock</td>
                <td class="item-qty">2</td>
                <td class="item-price">$52.94 <span class="text-offset item-multiple">$26.47 &#215; 2</span></td>
                <td><button name='btnEdit' class='btnEdits' style="vertical-align:middle" onclick="btn1Call(event,this);"><span>Edit </span></button></td>
            </tr>
            <tr>
                <td id="book-title">
                    <strong class="book-title">Introducing HTML5</strong>
                    <span class="text-offset">by Bruce Lawson &#38; Remy Sharp</span>
                </td>
                <td class="item-stock">Out of Stock</td>
                <td class="item-qty">1</td>
                <td class="item-price">$22.23</td>
                <td><button name='btnEdit' class='btnEdits' style="vertical-align:middle" onclick="btn1Call(event,this);"><span>Edit </span></button></td>
            </tr>
            <tr>
                <td id="book-title">
                    <strong class="book-title" >Bulletproof Web Design</strong>
                    <span class="text-offset">by Dan Cederholm</span>
                </td>
                <td class="item-stock">In Stock</td>
                <td class="item-qty">1</td>
                <td class="item-price">$30.17</td>
                <td><button name='btnEdit' class='btnEdits' style="vertical-align:middle" onclick="btn1Call(event,this);"><span>Edit </span></button></td>
            </tr>
        </tbody>

    </table>
 

    <script language="Javascript">

        function btn1Call(evt, t) {

            var txt = t.getElementById("book - title");

            alert(txt);
        }
    </script>
</body>
</html>
Avatar billede claes57 Ekspert
13. august 2018 - 10:49 #1
er det med vilje, at der er mellemrum i
var txt = t.getElementById("book - title");
jeg ville nok
var txt = t.getElementById("book-title");
Avatar billede keepy Seniormester
13. august 2018 - 11:04 #2
Godt spottet men det var ikke det der var galt
Avatar billede keysersoze Guru
13. august 2018 - 11:21 #3
t.getElementById('book-title').firstChild.textContent;

vil nok være lidt tættere på - men lige nu klikker du på et element, der ligger længere nede i træet end din book-title så du vil nok få null på getElementById og derfor skal du fx flytte id ud på tr eller også skal du bruge parentNode for at bevæge dig tilbage i træet.
Avatar billede keepy Seniormester
13. august 2018 - 11:46 #4
OK
Jeg har ændret  følgende og <td id="book-title"> men får kun første book-title lige meget hvlilken button jeg klikker

var child = document.getElementById("book-title");
        if (child != null && child.parentNode != null)
            alert("OK");
        else
            alert("NULL reference");
function btn1Call(evt, t) {

            alert(child.textContent);
        }
Avatar billede erikjacobsen Ekspert
13. august 2018 - 11:49 #5
2 eller flere elementer i HTML må ikke have samme id.
Avatar billede keepy Seniormester
13. august 2018 - 11:51 #6
<!DOCTYPE html>
<html lang="en">
<head>
    <title>Table</title>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1">

    <!-- Add icon library -->
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
    <link rel="stylesheet" type="text/css" href="css/TableStyle.css">
</head>
<body>
    <table id=table>
        <!--<table>-->
        <caption>Design and Front-End Development Books</caption>
        <thead>
            <tr>
                <th scope="col" colspan="1">Item</th>
                <th scope="col">Availability</th>
                <th scope="col">Qty</th>
                <th scope="col">Price</th>
                <th scope="col">Edit</th>
            </tr>
        </thead>
        <tbody>
            <tr>
                <td id="book-title">
                    <strong class="book-title" >Don&#8217;t Make Me Think</strong>
                    <span class="text-offset">by Steve Krug</span>
                </td>
                <td class="item-stock">In Stock</td>
                <td class="item-qty">1</td>
                <td class="item-price">$30.02</td>
                <td><button name='btnEdit' class='btnEdits' style="vertical-align:middle" onclick="btn1Call(event,this);"><span>Edit </span></button></td>
            </tr>
            <tr>
                <td id="book-title">
                    <strong class="book-title" >A Project Guide to UX Design</strong>
                    <span class="text-offset">by Russ Unger &#38; Carolyn Chandler</span>
                </td>
                <td class="item-stock">In Stock</td>
                <td class="item-qty">2</td>
                <td class="item-price">$52.94 <span class="text-offset item-multiple">$26.47 &#215; 2</span></td>
                <td><button name='btnEdit' class='btnEdits' style="vertical-align:middle" onclick="btn1Call(event,this);"><span>Edit </span></button></td>
            </tr>
            <tr>
                <td id="book-title">
                    <strong class="book-title">Introducing HTML5</strong>
                    <span class="text-offset">by Bruce Lawson &#38; Remy Sharp</span>
                </td>
                <td class="item-stock">Out of Stock</td>
                <td class="item-qty">1</td>
                <td class="item-price">$22.23</td>
                <td><button name='btnEdit' class='btnEdits' style="vertical-align:middle" onclick="btn1Call(event,this);"><span>Edit </span></button></td>
            </tr>
            <tr>
                <td id="book-title">
                    <strong class="book-title" >Bulletproof Web Design</strong>
                    <span class="text-offset">by Dan Cederholm</span>
                </td>
                <td class="item-stock">In Stock</td>
                <td class="item-qty">1</td>
                <td class="item-price">$30.17</td>
                <td><button name='btnEdit' class='btnEdits' style="vertical-align:middle" onclick="btn1Call(event,this);"><span>Edit </span></button></td>
            </tr>
        </tbody>

    </table>
 
    <script language="Javascript">

        var child = document.getElementById("book-title");
        if (child != null && child.parentNode != null)
            alert("OK");
        else
            alert("NULL reference");
   
        function btn1Call(evt, t) {
            alert(child.innerText);
        }



    </script>
</body>
</html>
Avatar billede keysersoze Guru
13. august 2018 - 21:58 #7
ja, selvfølgelig - som skrevet i #5 kan det ikke lade sig gøre med id så enten skal de rækker have et unikt id eller også skal du bare benytte .parentNode.parentNode i forhold til hvad der klikkes på.
Avatar billede keepy Seniormester
14. august 2018 - 08:38 #8
Perfekt Tak jeg er helt ny på HTML og JAVA script fronten.
Jeg tænkte på hvad nu hvis man oprettede tabellen dynamisk, hvordan fandt man så ud af hvilken Cell button man havde klikket på??
Avatar billede keysersoze Guru
14. august 2018 - 11:23 #9
Det gør ret beset ingen forskel - der kan være lidt omkring hvordan man opretter events men som din kode er kan jeg ikke lige se at det skulle give nogen forskel.
Avatar billede erikjacobsen Ekspert
14. august 2018 - 11:51 #10
Der er flere muligheder, naturligvis, men du kan fx give den forskellige navne:



<!DOCTYPE html>
<html lang="en">
<head>
    <title>Table</title>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1">

    <!-- Add icon library -->
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
    <link rel="stylesheet" type="text/css" href="css/TableStyle.css">
</head>
<body>
    <table id=table>
        <!--<table>-->
        <caption>Design and Front-End Development Books</caption>
        <thead>
            <tr>
                <th scope="col" colspan="1">Item</th>
                <th scope="col">Availability</th>
                <th scope="col">Qty</th>
                <th scope="col">Price</th>
                <th scope="col">Edit</th>
            </tr>
        </thead>
        <tbody>
            <tr>
                <td id="book-title1">
                    <strong class="book-title" >Don&#8217;t Make Me Think</strong>
                    <span class="text-offset">by Steve Krug</span>
                </td>
                <td class="item-stock">In Stock</td>
                <td class="item-qty">1</td>
                <td class="item-price">$30.02</td>
                <td><button name='btnEdit' class='btnEdits' style="vertical-align:middle" onclick="btn1Call(event,'book-title1');"><span>Edit </span></button></td>
            </tr>
            <tr>
                <td id="book-title2">
                    <strong class="book-title" >A Project Guide to UX Design</strong>
                    <span class="text-offset">by Russ Unger &#38; Carolyn Chandler</span>
                </td>
                <td class="item-stock">In Stock</td>
                <td class="item-qty">2</td>
                <td class="item-price">$52.94 <span class="text-offset item-multiple">$26.47 &#215; 2</span></td>
                <td><button name='btnEdit' class='btnEdits' style="vertical-align:middle" onclick="btn1Call(event,'book-title2');"><span>Edit </span></button></td>
            </tr>
            <tr>
                <td id="book-title3">
                    <strong class="book-title">Introducing HTML5</strong>
                    <span class="text-offset">by Bruce Lawson &#38; Remy Sharp</span>
                </td>
                <td class="item-stock">Out of Stock</td>
                <td class="item-qty">1</td>
                <td class="item-price">$22.23</td>
                <td><button name='btnEdit' class='btnEdits' style="vertical-align:middle" onclick="btn1Call(event,'book-title3');"><span>Edit </span></button></td>
            </tr>
            <tr>
                <td id="book-title4">
                    <strong class="book-title" >Bulletproof Web Design</strong>
                    <span class="text-offset">by Dan Cederholm</span>
                </td>
                <td class="item-stock">In Stock</td>
                <td class="item-qty">1</td>
                <td class="item-price">$30.17</td>
                <td><button name='btnEdit' class='btnEdits' style="vertical-align:middle" onclick="btn1Call(event,'book-title4');"><span>Edit </span></button></td>
            </tr>
        </tbody>

    </table>

    <script language="Javascript">

        function btn1Call(evt, t) {
            var e = document.getElementById(t);
            alert(e.innerText);
        }



    </script>
</body>
</html>
Avatar billede keepy Seniormester
14. august 2018 - 12:03 #11
Dette var ikke mindre end perfekt, mange tak.
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

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