Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript]Ocena kodu
Forum PHP.pl > Forum > Przedszkole
CconradD
Witam smile.gif
Ponieważ zacząłem się uczyć JavaScript, chciałbym poddać mój kod pod ocenę (wydaje mi się że jest to najlepsza forma nauki). Chodzi mi o błędne zapisy (nawet o ocenę i praktyczne wskazówki jak prowadzić zapis, żeby był czytelny), może jakieś błędy w składni itp.
  1. <head>
  2. <title>Get Description Script 01 (GDS01)</title>
  3. <meta http-equiv="content-type" content="text/html; charset=utf-8">
  4.  
  5. <style>
  6. div#alert { width:350px; border-color: #999999; border-style: solid; border-width: 1px}
  7. </style>
  8.  
  9. <script>
  10. function search()
  11. {
  12.      var result = document.getElementById("result");
  13.      var search = document.getElementById("search");
  14.      var string = search.value.toLowerCase();
  15.      var alert = document.getElementById("alert");
  16.      var line = "Hello world!";
  17.  
  18.      line = line.toLowerCase();
  19.      if (string.length>2) {
  20.            if (line.indexOf(string) != -1) {
  21.                  alert.innerHTML = "Fraze: <b>" + search.value + "</b> - znaleziono. Nr kolumny: " + line.indexOf(string);
  22.                  alert.style.background = '#FFFFFF';
  23.                  result.innerHTML = line.indexOf(string) + "<br />";
  24.            }
  25.            else {
  26.                  alert.innerHTML = "Fraze: <b>" + search.value + "</b> - nie znaleziona";
  27.                  alert.style.background = '#FF4500';
  28.            }
  29.      }
  30.      else {
  31.            alert.innerHTML = "Szukany wyraz musi zawierac minimum 3 znaki";
  32.            alert.style.background = '#FFFFCC';
  33.      }
  34. }
  35.  
  36. </script>
  37. </head>
  38.  
  39. <body>
  40.  
  41. <p><input type="text" id="search" onKeyup="search();">
  42. <p><div id="alert">Wpisz slowo</div>
  43. <p><div id="result"></div>
  44. </body>
  45. </html>
Rafal Filipek
Ok ,więc tak generalnie całość jest ok. Ale jak to przeważnie bywa w JS można zapisać to krócej smile.gif no wiec tak. Moje zmiany to. Troche oszczędniejsze zdefiniowanie zmiennych. Skasowanie niepotrzebnych zmiennych. Przerobiłem też if'y. Na początku masz if który jeżeli nie jest sprawdzony automatycznie zakańcza funkcję. Poźniej to już bardziej kosmetyka. Zmieniłem też sposób wywołania funkcji. Zamiast przypisywać ją do inputa z poziomu atrybutu, wstawiam ją po załadowaniu się dokumentu.
Moja propozycja.
Kod
<head>
<title>Get Description Script 01 (GDS01)</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8">

<style>
div#alert { width:350px; border-color: #999999; border-style: solid; border-width: 1px}
</style>

<script>
function search(){
    var result = document.getElementById("result"),
        string = document.getElementById("search").value,
        alert = document.getElementById("alert"),
        line = "Hello world!".toLowerCase(),
        index;
    if(string.length<3){
        alert.innerHTML = "Szukany wyraz musi zawierac minimum 3 znaki";
        alert.style.backgroundColor = '#FFFFCC';
        return;
    }
    if(index = line.indexOf(string.toLowerCase()) != -1){
        alert.innerHTML = "Fraze: <b>" + string + "</b> - znaleziono. Nr kolumny: " + index;
        alert.style.backgroundColor = '#FFFFFF';
        result.innerHTML = index + "<br />";
    }else{
        alert.innerHTML = "Fraze: <b>" + string + "</b> - nie znaleziona";
        alert.style.backgroundColor = '#FF4500';
    }
}
window.onload = function(){
    document.getElementById('search').onkeyup = function(){ search() };
}
</script>
</head>

<body>

<p><input type="text" id="search">
<p><div id="alert">Wpisz slowo</div>
<p><div id="result"></div>
</body>
</html>
CconradD
Super, dzięki smile.gif W takim zapisie jest tylko jeden problem, bo zmienną index traktuje jako wynik sprawdzania czy jest różny, nie jako cyfrę. Ale to wiem jak poprawić winksmiley.jpg
  1. if((index = line.indexOf(string.toLowerCase())) != -1){

I jeszcze jedno pytanie, czy da się jakoś "zerować" to co jest wysyłane do diva "result", ponieważ zapamiętuje on numer znalezionego słowa, pomimo jego zmiany.
Wpadłem na takie coś, dodawane do 2 pozostałych pętel (ale pewnie jest jakieś łatwiejsze rozwiązanie):
  1. result.innerHTML = null;
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.