Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [JavaScript][HTML] Walidator - jak zmienić kod?
camilost
post 10.10.2010, 02:36:56
Post #1





Grupa: Zarejestrowani
Postów: 39
Pomógł: 0
Dołączył: 25.02.2010

Ostrzeżenie: (0%)
-----


Jak to dobrze złożyć, aby walidator się nie rzucał (Na końcu HTML+JS)?

Walidator wypłakuje takie cuda
Cytat
document type does not allow element "input" here; missing one of "p", "h1", "h2", "h3", "h4", "h5", "h6", "div", "pre", "address", "fieldset", "ins", "del" start-tag
<input type="text" name="area" />

oraz
Cytat
document type does not allow element "select" here; missing one of "p", "h1", "h2", "h3", "h4", "h5", "h6", "div", "pre", "address", "fieldset", "ins", "del" start-tag
…e="shape" size="1" onchange="this.form.area.value=doArea(this.selectedIndex);">



Gdy dam te input i select poza form to wiadomo - nie będzie działać ;/
(Może div + value - liczba (potrzebna do switcha)questionmark.gif



  1. Wylicz pole figury:<form name="calcarea" action="...">
  2. <select name="shape" size="1" onchange="this.form.area.value=doArea(this.selectedIndex);">
  3. <option>...</option>
  4. <option value="square">Kwadrat</option>
  5. <option value="triangle">Trójkąt prostokątny</option>
  6. <option value="rectangle">Prostokąt</option>
  7. <option value="circle">Okrąg</option>
  8. <option value="sphere">Kula</option>
  9. <option value="parallelogram">Równoległobok</option>
  10. <input type="text" name="area" />
  11. </form>


  1. <script type="text/javascript">
  2. <!--
  3. function doArea(num) {
  4. switch(num) {
  5. case 0: return (""); break;
  6. case 1: var length = prompt("Wprowadź długość kwadratu:", "");
  7. length = length * length;
  8. return (length); break;
  9.  
  10. case 2: var width = prompt("Wprowadź szerokość podstawy:", "");
  11. var height = prompt("Wprowadź wysokość:", "");
  12. return (width * height / 2); break;
  13.  
  14. case 3: var width = prompt("Wprowadź szerokość:", "");
  15. var height = prompt("Wprowadź wysokość:", "");
  16. return (width * height); break;
  17.  
  18. case 4: var radius = prompt("Wprowadź promień okręgu: ", "");
  19. return (Math.PI * Math.pow(radius, 2)); break;
  20.  
  21. case 5: var radius = prompt("Wprowadź promień kuli:", 0);
  22. return (4 * Math.PI * (Math.pow(radius, 2))); break;
  23.  
  24. case 6: var boka = prompt("Wprowadź długość podstawy:", "");
  25. var height = prompt("Wprowadź wysokość:", "");
  26. return (boka * height); break;
  27. }
  28. }
  29. -->
  30. </script>
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 13)
skowron-line
post 10.10.2010, 07:01:28
Post #2





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

Ostrzeżenie: (0%)
-----


Cytat(camilost @ 10.10.2010, 01:36:56 ) *
Gdy dam te input i select poza form to wiadomo - nie będzie działać ;/
(Może div + value - liczba (potrzebna do switcha)questionmark.gif

Prędzej coś takiego
  1. <p><input /></p>
  2. <p>select /></p>


--------------------
I'm so fast that last night I turned off the light switch in my hotel room and was in bed before the room was dark - Muhammad Ali.
Peg jeżeli chcesz uprawiać sex to dzieci muszą wyjść, a jeżeli chcesz żeby był dobry ty też musisz wyjść - Al Bundy.

QueryBuilder, Mootools.net, bbcradio1::MistaJam
http://www.phpbench.com/
Go to the top of the page
+Quote Post
camilost
post 10.10.2010, 12:02:05
Post #3





Grupa: Zarejestrowani
Postów: 39
Pomógł: 0
Dołączył: 25.02.2010

Ostrzeżenie: (0%)
-----


Cytat
there is no attribute "name"
<form name="adv" action="...">


a w inputach mam onclick="document.adv.input.value= XXX" i w JS np. doit(){ document.adv.input.value = XX }

Jak to zmienić, aby też się nie rzucał? : D (JBC mogę podać cały kod [trochę go jest - nie za dużo])
Go to the top of the page
+Quote Post
bmL
post 10.10.2010, 13:53:44
Post #4





Grupa: Zarejestrowani
Postów: 301
Pomógł: 25
Dołączył: 15.07.2007
Skąd: Olsztyn

Ostrzeżenie: (0%)
-----


Kod
there is no attribute "name"
<form name="adv" action="...">


<form name="calcarea" action="...">
Podkreślone usunąć. Tak jak sugeruje komunikat błędu: Nie istnieje taki atrybut jak "name" (w domyśle dla tagu form)

Walidator nigdy nie będzie się czepiał zawartości skryptów. No chyba że się je źle wstawi... Nic tutaj nie masz poprawiać w skryptach, pomyśl co jest niepoprawnie w kodzie html/xhtml co kolwiek tam masz smile.gifsmile.gif

Ten post edytował bmL 10.10.2010, 13:59:34


--------------------
Tutaj miał być jakiś mądry tekst. Miał być... No ale jest głupi tekst.
Go to the top of the page
+Quote Post
camilost
post 10.10.2010, 14:19:58
Post #5





Grupa: Zarejestrowani
Postów: 39
Pomógł: 0
Dołączył: 25.02.2010

Ostrzeżenie: (0%)
-----


Super a co z JS? -,- Jak ma działać bez name? - Jak zmienić...

Zaawansowany kalkulator: http://212.59.248.184/calc.php

jak usunę to skrypt nie będzie działał bo nie znalazł odpowiedniego FORM -,-

Ten post edytował camilost 10.10.2010, 14:21:08
Go to the top of the page
+Quote Post
bmL
post 10.10.2010, 22:49:23
Post #6





Grupa: Zarejestrowani
Postów: 301
Pomógł: 25
Dołączył: 15.07.2007
Skąd: Olsztyn

Ostrzeżenie: (0%)
-----


Nadaj mu identyfikator (id="adv") i użyj document.getElementById('adv');


--------------------
Tutaj miał być jakiś mądry tekst. Miał być... No ale jest głupi tekst.
Go to the top of the page
+Quote Post
camilost
post 11.10.2010, 13:09:08
Post #7





Grupa: Zarejestrowani
Postów: 39
Pomógł: 0
Dołączył: 25.02.2010

Ostrzeżenie: (0%)
-----


document.adv.input.value zamienić na document.getElementById('adv').input.value czy document.getElementById ('adv')

(Próbowałem oba, id="adv" mam i lipka ^^ nic nie działa w zaawansowanym)
Go to the top of the page
+Quote Post
bmL
post 11.10.2010, 19:08:43
Post #8





Grupa: Zarejestrowani
Postów: 301
Pomógł: 25
Dołączył: 15.07.2007
Skąd: Olsztyn

Ostrzeżenie: (0%)
-----


Wklej urywek kodu js w którym odnowisz się do document.adv.input.value. W ogóle to uważał bym z takimi nazwami pól jak np. input. Nie wiem czy to nie będzie miało ubocznych efektów ale kiedyś nazwałem pole submit i przez to nie mogłem wywołać metody forum.submit() bo została nadpisana albo ukryta przez pole o nazwie submit.


--------------------
Tutaj miał być jakiś mądry tekst. Miał być... No ale jest głupi tekst.
Go to the top of the page
+Quote Post
camilost
post 11.10.2010, 22:04:40
Post #9





Grupa: Zarejestrowani
Postów: 39
Pomógł: 0
Dołączył: 25.02.2010

Ostrzeżenie: (0%)
-----


  1. function doit() {
  2. var userinput = document.adv.input.value;
  3. document.adv.input.value = eval(userinput);
  4. }
  5.  
  6. function plus() {
  7. document.adv.input.value += '+';
  8. }
  9.  
  10. function minus() {
  11. document.adv.input.value += '-';
  12. }
  13.  
  14. function mult() {
  15. document.adv.input.value += '*';
  16. }
  17.  
  18. function div() {
  19. document.adv.input.value += '/';
  20. }


i do tego html kawałek

  1. <form name="adv" action="...">
  2. <table width="55" cellspacing="2" cellpadding="5" border="1">
  3. <tr>
  4. <td><input type="text" name="input" size="20" maxlength="30" class="disp"/></td>
  5. <td><input type="button" value=" ^ " onclick="power()" class="btswhite"/></td>
  6. <td><input type="button" value=" C " onclick="document.adv.input.value = ''; " class="btswhite"/></td>


Dalej już nic nie ma z js ^^

Ten post edytował camilost 11.10.2010, 22:04:56
Go to the top of the page
+Quote Post
bmL
post 11.10.2010, 23:39:32
Post #10





Grupa: Zarejestrowani
Postów: 301
Pomógł: 25
Dołączył: 15.07.2007
Skąd: Olsztyn

Ostrzeżenie: (0%)
-----


document.getElementById('adv').input.value += '+';
Powinno działać jeżeli nie działa to spróbuj zmienić nazwę input na jakąś inną bo input to nazwa tagu html'owego więc może stwarzać problemy. Jak nie będzie działać odpal stronę i użyj jakichś narzędzi do debugowania js zobacz czy wyświetla jakieś błędy ten kod js. W FireFoxie konsolę błędów odpalasz ctr+shift+j w operze trzeba w menu gdzieś poszukać.

ps. jak piszesz kalkulator to ładnie by było to opakować w klasę smile.gif Wbrew pozorom js ma bardzo fajny model obiektowy smile.gif

ps2. ten link co wcześniej podałeś http://212.59.248.184/calc.php u mnie w firefoxie kodowanie się sypie i nie działa po prostu tongue.gif

Na początek zaglądam w źródło i widzę:
Kod
//<![CDATA[
<!--
function showSpoiler(obj)
{
    var inner = obj.parentNode.getElementsByTagName("div")[0];
    if (inner.style.display == "none")
        inner.style.display = "";
    else
        inner.style.display = "none";
}
-->
//]]>

Fajnie że opakowałeś w sekcję CDATA i komentarze HTML'owe, ale czy czegoś tutaj nie brakuje? snitch.gif Na przykład <script type="text/javascript">? smile.gif

Nie wiem może czepiam się rzeczy których nie powinienem bo jesteś w trakcie poprawiania ich? snitch.gif


--------------------
Tutaj miał być jakiś mądry tekst. Miał być... No ale jest głupi tekst.
Go to the top of the page
+Quote Post
camilost
post 12.10.2010, 00:50:41
Post #11





Grupa: Zarejestrowani
Postów: 39
Pomógł: 0
Dołączył: 25.02.2010

Ostrzeżenie: (0%)
-----


Ta robiłem że zamiast include <script src="i tu sciezka do spoilera"> </script> ^^ dlatego błędy miałeś : d

@EDIT nie wiem jak ja to wcześniej robiłem, że teraz mi działa a wcześniej nie : D

Został ostatni calc ^^
  1. <form id="Keypad" action="...">
  2. <table border="2" width="50" cellpadding="1" cellspacing="5">
  3. <tr>
  4. <td colspan="3"><input name="ReadOut" type="text" size="24" value="0"/></td>
  5. <td></td>
  6. <td><input name="btnClear" type="button" value=" C " onclick="Clear()"/></td>
  7. <td><input name="btnClearEntry" type="button" value=" CE " onclick="ClearEntry()"/></td>
  8. </tr>
  9. <tr>
  10. <td><input name="btnSeven" type="button" value=" 7 " onclick="NumPressed(7)"/></td>


  1. <script type="text/javascript">
  2. //<![CDATA[
  3. <!--
  4. var FKeyPad = document.getElementById('Kaypad');
  5. var Accum = 0;
  6. var FlagNewNum = false;
  7. var PendingOp = "";
  8. function NumPressed (Num) {
  9. if (FlagNewNum) {
  10. FKeyPad.ReadOut.value = Num;
  11. FlagNewNum = false;
  12. }
  13. else {
  14. if (FKeyPad.ReadOut.value == "0")
  15. FKeyPad.ReadOut.value = Num;
  16. else
  17. FKeyPad.ReadOut.value += Num;
  18. }
  19. }


W debugu pisze
Cytat
Uncaught TypeError: Cannot read property 'ReadOut' of null
NumPressedcalc.php:309
(anonymous function)calc.php:281
onclick

A te linie zaczynają się od FKeyPad, czyli coś źle z nim mam? Zostawię narazie z błędami (tylko ten calc - Zwykły)

Ten post edytował camilost 12.10.2010, 01:09:59
Go to the top of the page
+Quote Post
bmL
post 12.10.2010, 12:54:30
Post #12





Grupa: Zarejestrowani
Postów: 301
Pomógł: 25
Dołączył: 15.07.2007
Skąd: Olsztyn

Ostrzeżenie: (0%)
-----


W firefoxie mam taki błąd:
Kod
Błąd: FKeyPad is null
Plik źródłowy: http://212.59.248.184/calc.php
Wiersz: 309

Patrzę w twój kod i mam
Kod
var FKeyPad = document.getElementById('Kaypad');

Widzisz literówkę? snitch.gif

ps. zrób coś z kodowaniem tongue.gif Zobacz jak strona wygląda w firefox.

ps2. kodowanie się psuje chyba bo plik zapisujesz z BOM (google po więcej info) sprawdź w swoim edytorze albo go zmień. Wnioskuję po pierwszych 3 znakach wyświetlonych w FX ale ręki nie dam sobie uciąć

Ten post edytował bmL 12.10.2010, 13:08:56


--------------------
Tutaj miał być jakiś mądry tekst. Miał być... No ale jest głupi tekst.
Go to the top of the page
+Quote Post
camilost
post 12.10.2010, 14:57:42
Post #13





Grupa: Zarejestrowani
Postów: 39
Pomógł: 0
Dołączył: 25.02.2010

Ostrzeżenie: (0%)
-----


Dobra już ze skryptami git^^

Właśnie w szkole zauważyłem, że tylko calc.php w firefoxie ma zryte kodowanie ^^
Tak mam na każdej z BOM i na innych działa. ;d

Zobacz teraz kodowanie (Nie mam firefoxa)
Zapomniałem w tamtym pliku iso na UTF i kodowanie dałem w ISO a format pliku na UTF. haha.gif
Zrobiłem bez BOM ;]

Ten post edytował camilost 12.10.2010, 18:16:23
Go to the top of the page
+Quote Post
bmL
post 12.10.2010, 20:48:00
Post #14





Grupa: Zarejestrowani
Postów: 301
Pomógł: 25
Dołączył: 15.07.2007
Skąd: Olsztyn

Ostrzeżenie: (0%)
-----


Jest git.


--------------------
Tutaj miał być jakiś mądry tekst. Miał być... No ale jest głupi tekst.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 03:27