webForumDet fria alternativet

Properties som försvinner... ?

8 svar · 576 visningar · startad av aasah

aasahMedlem sedan mars 20034 471 inlägg
#1

Första gången jag trycker på valfri vit ruta blir det som jag vill. Andra gången får jag detta felmeddelande:

FF skrev skrev:

Fel: shy has no properties
Källkodsfil: Denna
Rad: 11

Dvs på något mysko vis har ett (av flera) hidden-fält plötsligt tappat sin value-egenskap? VA? Varför? :q :x

nitro2k01Medlem sedan aug. 20039 342 inlägg
#2

Var sker felet egentligen? Jag hittar inga referenser till shy, och inga externa javascript-filer. Var det rätt länk?

aasahMedlem sedan mars 20034 471 inlägg
#3

nitro2k01 skrev:

Var sker felet egentligen? Jag hittar inga referenser till shy, och inga externa javascript-filer. Var det rätt länk?

Ja. Det sker i funktionen findWords(row, col) i head. På rad 11 i källan... enligt felmeddelandet i alla fall. (Ursäkta att jag glömde skriva det... :r )

emissionMedlem sedan dec. 19996 721 inlägg
#4

Felet är att hiddenfältet "letterPos" försvinner, eftersom du sätter innerHTML på td:n "currentPos". Flytta hiddenfältet.

aasahMedlem sedan mars 20034 471 inlägg
#5

Tack emission! :e

Lite längre fram i koden är jag av med nästa hidden.value, men det ligger inte i någon tabell. På vilket sätt trollar jag bort detta value? :q Om jag trycker i någon vit cell öppnas en nedre tabell för input. När jag skriver en bokstav i den översta cellen och trycker på add Letter så händer detta:

FF skrev:

Fel: cwPos has no properties
Källkodsfil: Denna webbsida
Rad: 55

Felmeddelandet triggas i addLetter.

Peter SMedlem sedan dec. 20025 483 inlägg
#6

Lägg in felhantering i addLetter() för att ta reda på vad pos är:

function addLetter() {
   var td = document.getElementById('currentPos');
   var pos = td.innerHTML;
   var letterBox = document.getElementById('wordBoxLetter');
   var letter = letterBox.value.toUpperCase();
   if (letter.length != 1) {
      alert ("You can only enter ONE letter in this field!");
   }
   else {
      var cwVisiblePos = document.getElementById('td_'+pos);
      cwVisiblePos.value = letter;
alert(pos);
      var cwPos = document.getElementById('cw_'+pos);
      cwPos.value = letter;
   }
   alert ('You accessed '+pos+' and entered '+letter);
}
aasahMedlem sedan mars 20034 471 inlägg
#7

Peter S skrev:

Lägg in felhantering i addLetter() för att ta reda på vad pos är: ...

Det vet jag ju redan, via diverse popup rutor, se tex nedersta raden i koden du visar. Om man trycker i rad B kol 8 är den B8 osv för alla andra vita rutor. (Dock gjorde jag som du föreslog för att försäkra mig om att det inte var något udda scope som gjorde att pos inte syntes i if-satsen, men tack och lov var den B8 där också.)
Ren inspektion visar

<form id="cwForm" method="post" action="tstNew.php">
  <input type="hidden" name="cw_A4" value=""><input type="hidden" name="cw_B3" value="">
  <input type="hidden" name="cw_B4" value=""><input type="hidden" name="cw_B5" value="">
  <input type="hidden" name="cw_B6" value=""><input type="hidden" name="cw_B7" value="">
  <input type="hidden" name="cw_B8" value=""><input type="hidden" name="cw_C4" value="">
  <input type="hidden" name="cw_C6" value=""><input type="hidden" name="cw_D1" value="">
  <input type="hidden" name="cw_D2" value=""><input type="hidden" name="cw_D3" value="">
  <input type="hidden" name="cw_D4" value=""><input type="hidden" name="cw_D5" value="">
  <input type="hidden" name="cw_D6" value=""><input type="hidden" name="cw_E6" value="">
  <input type="hidden" name="cw_F6" value="">
....</form>

Vilket motsvarar alla 17 vita rutor som finns. :q :q :q

Om jag byter ut din alert(pos) mot alert('cw_'+pos); så skrivs cw_B8 ut, och den hidden-variabeln finns ju? Spelar det roll att den ligger i en annan form än den jag skriver i? :q

För övrigt prövade jag att hårdkoda:

var cwPos = document.getElementById('cw_B8');

direkt, och det fältet finns inte heller - precis samma felmeddelande! (Föga förvånande i och för sig, givet pos värde, men...)

Peter SMedlem sedan dec. 20025 483 inlägg
#8

Problemet är att document.getElementById() hämtar precis vad dess namn avslöjar: elementet med angivet id. Dina hiddenrutor har inget sådant. Ändra - bums! ;)

aasahMedlem sedan mars 20034 471 inlägg
#9

Peter S skrev:

Problemet är att document.getElementById() hämtar precis vad dess namn avslöjar: elementet med angivet id. Dina hiddenrutor har inget sådant. Ändra - bums! ;)

Åh! :x Grrrrr.... Det första man blir blind på...! Tusen tack!!! :birp

256 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
120 ms — hämta statistik (db)
133 ms — hämta tråd, inlägg och bilagor (db)