Avatar billede artico Novice
03. maj 2012 - 22:39 Der er 8 kommentarer og
1 løsning

knap med funktion til opdt. af textarera

Jeg sidder og roder med dette javascript og har brug for (meget) hjælp :-)

Knappen med id="btnSave" og id="btnRemove, kommer op i et lille pop op vindue, og når jeg trykker på en af disse knapper
vil jeg gerne have at funktionen : grabPoints(); bliver aktiveret. (den viser så noget tekst i textaera, id="output") dette skal ellers gøres efterfølgende
ved (endnu) et tryk på knappen "Gem", jeg kan ikke lige få hul på det hele fordi der ingen form er.. så jeg er lidt lost..


Her er HTML delen:

<table class="redtabel">
            <tr>
                <td>Klik på billedet for at oprette et punkt</td>
            </tr>
            <tr>
                <td align="right">
                    <input type="button" value="Gem" onclick="grabPoints();" />
                </td>
            </tr>
            <tr>
                <td>
                    <textarea id="output" cols="4" rows="6" style="width: 500px;" ></textarea>
               
                </td>
            </tr>
            <tr>
                <td>
                    <img id="pic" src="mailskarm.jpg" onclick="mouseclick(event, this);" alt="" />
                </td>
            </tr>
        </table>





<div id="positionNode" style="position: absolute; width: 350px; display:none;" >
       
            <img id="dot" width="15" height="15" src="" title="Klik for at rette eller slette punkt" style="cursor: hand;" />
            <table id="poptabel"> 
                <tr>
                    <td>
                        <table id="contents" style="padding: 10px;">
                            <tr>
                                <td style="align: right;">Tekst:</td>
                                <td><input id="textInput" type="text" style="width: 90%;" /></td>
                            </tr>
                            <tr >
                                <td ></td>
                                <td align="right">
                               
                <table class="k">
                        <tr>
                <td><input id="btnSave" type="button" value="Save"/></td>
                <td><input id="btnRemove" type="button" value="Remove"/></td>
Avatar billede majbom Novice
04. maj 2012 - 21:16 #1
Hvad er det helt præcist dit problem er?

Du skal vel have noget onclick-event på de knapper?
Avatar billede artico Novice
05. maj 2012 - 12:06 #2
Jeg har forsøgt med onclick, men det virkede ikke, så har du et forslag?
det skal jo være denne knap:
<td><input id="btnSave" type="button" value="Save"/></td>

som helt skal erstatte, den første knap i koden:
  <input type="button" value="Gem" onclick="grabPoints();" />

og hvis jeg "bare sætter onclick="grabPoints();" på den første knap så sker der ikke noget ved det ..?
Avatar billede majbom Novice
05. maj 2012 - 18:13 #3
du får ikke en javascript-fejl i browseren?

hvordan ser funktionen ud?
Avatar billede artico Novice
05. maj 2012 - 19:59 #4
NO, ingen fejl jeg kan jagte ?
Hele koden ser således ud:

<!DOCTYPE HTML>
    <head>
        <title></title>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
        <style type="text/css" media="screen" >
     
      body{
        font-family: Arial, Helvetica, Verdana;
        font-size: 9px;
      }
        #positionNode{
        padding: 8px ;
        border: 1px solid #498AC4;
        background-color: #F0F9FE;
       
    }
      #contents{
        width: 90%;
        background-color: #F0F9FE;
        border-collapse: collapse;
        border: 2px solid #498AC4;
        padding: 15px;
        text-align: left;
        font-size: 10px;
        font-family: Arial, Helvetica, Verdana;
       
      }
      #poptabel{
        width: 100%;
       
      }
      .redtabel{
        border: 1px solid #CCC;
        background-color: #F5F5F5;
        padding: 8px;
       
      }
      td.redtabel {
            padding: 6px;
            border: 1px solid #CCC;       
      }
        td {
            display: table-cell;
            vertical-align: inherit; }

        </style>
       
        <script type="text/JavaScript">
       
        //Indsæt punkt-billederne her i kronologisk rækkefølge.
        var arrDots = Array("maps/dot_1.gif", "maps/dot_2.gif", "maps/dot_3.gif", "maps/dot_4.gif");
       
       
        var arrPoints = new Array();
        var arrDels = new Array();
        var pointId = 0;
       
        function mouseclick(e, img)
        {
            if (!e) e = window.event;
           
            var posX = 0;
            var posY = 0;
           
            var imgPos = findPos(img);
           
            if(document.all) //IE
            {                   
                posX = e.offsetX;
                posY = e.offsetY;
            }
            else //FireFox
            {               
                posX = e.layerX - imgPos[0]-1;
                posY = e.layerY - imgPos[1]-1;
            }
             
            placeDot(posX, posY, imgPos); 
        }
       
        function placeDot(posX, posY, imgPos)
        {
            var elmDot = document.getElementById("positionNode").cloneNode(true);
            var id = -1;
           
            if(pointId >= arrDots.length && arrDels.length == 0)
            {
                alert("No more points to place!");
                return;
            }
           
            if(arrDels.length == 0)
                id = pointId++;
            else
            {
                id = arrDels[arrDels.length-1];
                arrDels = removeLastArrayItem(arrDels);
               
            }
           
            elmDot.id = elmDot.id + "|" + id;
           
            elmDot.style.left = (imgPos[0] + posX).toString() + "px";
            elmDot.style.top = (imgPos[1] + posY).toString() + "px";
           
            //Setup events
            getElement(elmDot, "btnSave").onclick = function() { savePoint(elmDot); };
            getElement(elmDot, "btnRemove").onclick = function() { removePoint(elmDot); };
            var imgElm = getElement(elmDot, "dot");
            imgElm.onclick = function() { dotClick(elmDot); };
            imgElm.src = arrDots[id];
           
            getElement(elmDot, "xyCoords").lastChild.nodeValue = posX + "," + posY;
           
            elmDot.style.display = "block";
           
            document.getElementById("container").appendChild(elmDot);
        }
       
        function savePoint(div)
        {     
          getElement(div, "contents").style.display = "none"; 
           
          for(var i = 0; i < arrPoints.length; i++)
              if(div.id == arrPoints[i])
                  return;
       
          arrPoints[arrPoints.length] = div.id;
        }
       
        function removePoint(div)
        {
          var arrNew = new Array();
         
          for(var i = 0; i < arrPoints.length; i++)
              if(div.id != arrPoints[i])
                  arrNew[arrNew.length] = arrPoints[i];
         
          arrPoints = arrNew;
             
          arrDels[arrDels.length] = parseInt(div.id.split("|")[1]);
          div.parentNode.removeChild(div);
        }
       
        function dotClick(div)
        {
          getElement(div, "contents").style.display = "block";
        }
       
       
        function grabPoints()
        {
            var output = document.getElementById("output");
            output.value = "";
           
            arrPoints.sort(sortPoints);
           
            for(var i = 0; i < arrPoints.length; i++)
            {
                var strPointData = pointToString(document.getElementById(arrPoints[i]));
               
                if(i != 0)
                    output.value += "\n";
                   
                output.value +=  strPointData;
            }
        }
       
        function pointToString(div)
        {
            var pointNr =  parseInt(div.id.split("|")[1]) + 1;
            var arrPos = getElement(div, "xyCoords").lastChild.nodeValue.split(",");
            var strText = getElement(div, "textInput").value;
           
            var strReturn = pointNr + ". (" + arrPos[0] + ", " + arrPos[1] + ")" + " | " + strText;           
            return strReturn;
        }
       
       
        //------------- auxilery methods -----------------
        //Returns the position of an object
        function findPos(obj)
        {
            var curleft = curtop = 0;
            if (obj.offsetParent)
            {
                curleft = obj.offsetLeft;
                curtop = obj.offsetTop;
               
                while (obj = obj.offsetParent)
                {
                    curleft += obj.offsetLeft;
                    curtop += obj.offsetTop;
                }
            }
           
            return [curleft,curtop];
        }
       
        function sortPoints(a,b)
        {
            return(parseInt(a.split("|")[1])-parseInt(b.split("|")[1]))
        }

       
        var returnElm;
        function getElement(elm, id)
        {
            returnElm = null;
           
            getElm(elm, id);
            return returnElm;
        }
       
        function getElm(elm, id)
        {
            if(elm.id == id)     
                returnElm = elm;
               
            for(var i = 0; elm.childNodes[i] && returnElm == null; i++)
                getElm(elm.childNodes[i], id);   
        }
       
        function removeLastArrayItem(arr)
        {
            var arrNew = new Array();
           
            for(var i = 0; i < arr.length-1; i++)
                arrNew[arrNew.length] = arr[i];
           
            return arrNew;
        }       
        </script>
    </head>
    <body>
        <table class="redtabel">
            <tr>
                <td>Klik på billedet for at oprette et punkt</td>
            </tr>
            <tr>
                <td align="right">
                <input type="button" value="Gem" onclick="grabPoints();" />
                </td>
            </tr>
            <tr>
                <td>
                    <textarea id="output" cols="4" rows="6" style="width: 500px;" ></textarea>
               
                </td>
            </tr>
            <tr>
                <td>
                    <img id="pic" src="mailskarm.jpg" onclick="mouseclick(event, this);" alt="" />
                </td>
            </tr>
        </table>
       
        <div id="positionNode" style="position: absolute; width: 350px; display:none;" >
       
            <img id="dot" width="15" height="15" src="" title="Klik for at rette eller slette punkt" style="cursor: hand;" />
            <table id="poptabel"> 
                <tr>
                    <td>
                        <table id="contents" style="padding: 10px;">
                            <tr>
                                <td style="align: right;">Tekst:</td>
                                <td><input id="textInput" type="text" style="width: 90%;" /></td>
                            </tr>
                            <tr >
                                <td ></td>
                                <td align="right">
                               
                <table class="k">
                        <tr>
                <td><input id="btnSave" type="button" value="Save" onclick="grabPoints();" /></td>
                <td><input id="btnRemove" type="button" value="Remove"/></td>
                        </tr>
                        </table>       
                               
                                </td>
                            </tr>
                        </table>
                    </td>
                    <td><div id="xyCoords" style="display: none;">&nbsp;</div></td>
                </tr>
            </table>
        </div>
        <div id="container"></div>
       
    </body>
</html>
Avatar billede majbom Novice
05. maj 2012 - 21:50 #5
har du et link til siden?
Avatar billede artico Novice
06. maj 2012 - 08:04 #6
Avatar billede majbom Novice
10. maj 2012 - 21:49 #7
okay, nu tror jeg at jeg er ved at være med.

grabPoints() skal køres når der trykkes "Save" eller "Remove" i den lille popup?

men hvad så men funktionerne der allerede er på de 2 knapper? skal de køres anden gang der trykkes på knappen?

btw den der "getElm" - hvad er det for en overflødig funktion? hvorfor ikke bare bruge getElementById?
Avatar billede artico Novice
11. maj 2012 - 09:45 #8
Save og Remove er når man sætter eller sletter de små prikker oven på grafikken, herefter kan man så få vist de tekster, man har skrevet i textarea med : grabPoints()

Så missionen er, at når det lille popup med "Save og remove" lukker så bliver teksterne automatisk vist i tekstfeltet.
Avatar billede artico Novice
02. august 2012 - 14:30 #9
Lukker butikken.. kommer ikke videre..
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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