przyklad z ksiazki javascript Jon Duckett

przyklad z ksiazki javascript Jon Duckett
dwroblew
  • Rejestracja:około 7 lat
  • Ostatnio:około rok
  • Lokalizacja:Frankfurt am Main (Germany)
  • Postów:50
0

witam wszystkich,

przerabiam książkę pewno wszystkim dobrze znaną JavaScript Jona Ducketta. Chodzi mianowicie o rozdział 6 przykładowa aplikacja.
Kod js przedstawiam poniżej. Nurtuje mnie jedna rzecz której nie mogę pojąć w tym kodzie . Po naciśnięciu na obrazek który generuje css na stronie
zostaje podmieniona wartość atrybutu odpowiedzialna za wyświetlenie tego obrazka na inny, co za tym idzie otrzymujemy nowy obrazek. Wszystko ok
pytanie moje brzmi w którym miejscu w kodzie js jest połączony ten owy obrazek z zdarzeniem i jak jest w ogóle wywoływane to zdarzenie. Wiem ,że to co
napisałem jest dość chaotyczne, ale liczę na to , że jednak jest tutaj rzesza ludzi którzy znają tą książkę i przypominają sobie o który przykład mi chodzi.
Dla podpowiedzi , omawiany przypadek znajduje się na stronie 297.

Kopiuj

var noteInput, noteName, textEntered, target;    // Declare variables

noteName = document.getElementById('noteName');  // Element that holds note
noteInput = document.getElementById('noteInput');// Input for writing the note

function writeLabel(e) {                         // Declare function
  if (!e) {                                      // If event object not present
    e = window.event;                            // Use IE5-8 fallback
  }
  target = e.target || e.srcElement;             // Get target of event
  textEntered = target.value;                    // Value of that element
  noteName.textContent = textEntered;            // Update note text
}


function recorderControls(e) {                   // Declare recorderControls()
  if (!e) {                                      // If event object not present
    e = window.event;                            // Use IE5-8 fallback
  }
  target = e.target || e.srcElement;             // Get the target element
  if (e.preventDefault) {                        // If preventDefault() supported
    e.preventDefault();                          // Stop default action
  } else {                                       // Otherwise
    e.returnValue = false;                       // IE fallback: stop default action
  }

  switch(target.getAttribute('data-state')) {    // Get the data-state attribute
    case 'record':                               // If its value is record
      record(target);                            // Call the record() function
      break;                                     // Exit function to where called
    case 'stop':                                 // If its value is stop
      stop(target);                              // Call the stop() function
      break;                                     // Exit function to where called
      // More buttons could go here...
  }
}

function record(target) {                        // Declare function
  target.setAttribute('data-state', 'stop');     // Set data-state attr to stop
  target.textContent = 'stop';                   // Set text to 'stop'
}

function stop(target) {
  target.setAttribute('data-state', 'record');   //Set data-state attr to record
  target.textContent = 'record';                 // Set text to 'record'
}

if (document.addEventListener) {                 // If event listener supported
  document.addEventListener('click', function(e) {// For any click document
    recorderControls(e);                         // Call recorderControls()
  }, false);                                     // Capture during bubble phase
  // If input event fires on noteInput input call writeLabel()
  noteInput.addEventListener('input', writeLabel, false); 
} else {                                         // Otherwise
  document.attachEvent('onclick', function(e) {  // IE fallback: any click
    recorderControls(e);                         // Calls recorderControls()
  });
 // If keyup event fires on noteInput call writeLabel()
  noteInput.attachEvent('onkeyup', writeLabel);
}

Kamil Pyrkosz
Kamil Pyrkosz
przepisałeś to ręcznie ?
neves
  • Rejestracja:prawie 22 lata
  • Ostatnio:3 dni
  • Lokalizacja:Kraków
  • Postów:1114
0

zdarzenie podpinasz pod element html, więc po podmianie css'a, który zmienia tyko wygląd (obrazek), ciągle masz ten sam element html z już podpiętym zdarzeniem.


paweł rożen
  • Rejestracja:około 5 lat
  • Ostatnio:około 5 lat
  • Postów:1
0

Żeby dokładnie zrozumieć ten przykład trzeba widzieć kod html dla elementu buttons i css dla elementu a:

html dla elementu nadrzędnego button, w którym odbywa się nasłuchiwanie zdarzenia click:

Kopiuj
<div id="buttons">
     <a data-state="record" href>record</a>
<div>


css:

Kopiuj
buttons a{

width:100px;
height:100px;
text-indent:100%;
margin-top:20px;
display:inline-block;
white-space:nowrap;
overflow:hidden;
}

a [data-state='record']{
background-image:url(../img/record.png)
}

a [data-state='stop']{
background-image:url(../img/stop.png)
}
edytowany 8x, ostatnio: paweł rożen

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.