Functie werkt wel en niet

Status
Niet open voor verdere reacties.

JeroenE

Terugkerende gebruiker
Lid geworden
20 mrt 2005
Berichten
1.950
Hallo,

Ik heb een kleine functie gemaakt die ervoor zorgt dat aan de hand van de gekozen letter in de ene select een tweede select gevuld wordt met bijhorende opties.

Hier is de pagina waar het op draait met het werkende testscript:
PHP:
<?php
$aalphabeth = array(" ", "A", "B", "C", "D", "E", "F", "G", "H", "J", "I", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z");

?>
<script language="javascript" type="text/javascript">

// deze functie werkt

function flocations(sletter) {
	var objx = document.getElementById("loc");
	while (objx.length > 0) {
		objx.remove(objx.length-1);
	};
	for (var $na = 0; $na <= 7; $na++) {
		var snewloc = document.createElement("option");
		if ($na != 5) {
			snewloc.text = ($na == 0) ? "Kies een gemeente" : "Dit is optie " + $na;
		} else {
			snewloc.text = "Je koos de letter " + sletter;
		};
		objx.add(snewloc);
	};
};
</script>
<form name="infoform" method="post" action="<?php $PHP_SELF ?>">
  <div id="detailsdiv">
    <div id="detailstitlediv" class="titlediv">Gegevens</div>
    <div id="detailscontentdiv" class="contentsdiv">
      <center>
        <b>Gemeente, contactpersoon en website</b>
      </center>
      <br />
      <table>
        <tr>
          <td>Gemeente:
            <select name="firstletter" onchange="javascript:flocations(this.value);">
              <?php
			  for ($na = 0; $na <= count($aalphabeth); $na++) {
				  ?>
                  <option value="<?php echo $aalphabeth[$na]; ?>"><?php echo $aalphabeth[$na]; ?></option>
                  <?php
			  };
			  ?>
            </select></td>
          <td><select name="loc" id="loc" style="width: 135px" />
            <option>1</option><option>2</option>
            </select>
            <font color="#ff0000">*</font></td>
        </tr>
        <tr>
          <td>Contactpersoon:</td>
          <td><input name="contact" /></td>
        </tr>
        <tr>
          <td>G.S.M.:</td>
          <td><input name="cell" /></td>
        </tr>
        <tr>
          <td>E-mail:</td>
          <td><input name="mail" /></td>
        </tr>
        <tr>
          <td>Website:</td>
          <td><input name="site" /></td>
        </tr>
      </table>
    </div>
  </div>
  <div id="hoursdiv">
    <div id="hourstitlediv" class="titlediv">Openingsuren</div>
    <div id="hourscontentdiv" class="contentsdiv">
      <center>
        <table id="hourstable" cellspacing="0">
          <tr>
            <th colspan="5" class="hourstableheader">Van ..u tot ..u</th>
          </tr>
          <?php
		for ($na = 0; $na < count($adays); $na++) {
			?>
          <tr>
            <th><?php echo substr($adays[$na], 0, 2); ?></th>
            <td><input size="3" name="<?php echo $adays[$na]; ?>starthour" maxlength="2">
              u
              <input size="3" name="<?php echo $adays[$na]; ?>startminutes" maxlength="2"></td>
            <td>tot</td>
            <td><input size="3" name="<?php echo $adays[$na]; ?>stophour" maxlength="2">
              u
              <input size="3" name="<?php echo $adays[$na]; ?>stopminutes" maxlength="2"></td>
            <?php //echo $aperiods[$na]; ?>
            </td>
          </tr>
          <?php
		};
		?>
          <tr>
            <td colspan="5" class="hourstablefooter"><marquee>
              &nbsp;<?php echo $schicricomment; ?>
              </marquee></td>
          </tr>
        </table>
      </center>
    </div>
  </div>
  <div id="picturediv">
    <div id="picturetitlediv" class="titlediv">&nbsp;</div>
    <div id="icerinkimgdiv"><br />
      <center>
        <textarea cols="45" rows="15" name="comment"></textarea>
      </center>
    </div>
  </div>
  <div id="linksdiv">
    <div id="linkstitlediv" class="titlediv">Opmerking</div>
    <div id="linkscontentdiv" class="contentsdiv">
      <center>
        <input type="submit" value="Verzenden"/>
        &nbsp;&nbsp;&nbsp;&nbsp;
        <input type="reset" value="Beginwaarden" />
      </center>
    </div>
  </div>
</form>

Hier is de pagina met het uiteindelijke script dat niet werkt:
PHP:
<?php
$aalphabeth = array(" ", "A", "B", "C", "D", "E", "F", "G", "H", "J", "I", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z");

?>
<script language="javascript" type="text/javascript">
var alocations = new Array("Kies een gemeente");
<?php
for ($na = 0; $na < count($azipcodes); $na++) {
	?>
	alocations[<?php echo $na+1; ?>] = "<?php echo $azipcodes[$na]["location"]; ?>";
	<?php
};
?>

//deze functie werkt niet

function flocations(sletter) {
	var objx = document.getElementById("loc");
	while (objx.length > 0) {
		objx.remove(objx.length-1);
	};
	for (var na = 0; na < alocations.length; na++) {
		var snewloc = document.createElement("option");
		if (na == 0) {
			snewloc.text = alocations[na];
		} else if (alocations[na].substr(0,1) == sletter) {
			snewloc.text = alocations[na];
		};
		objx.add(snewloc);
	};
};
</script>
<form name="infoform" method="post" action="<?php $PHP_SELF ?>">
  <div id="detailsdiv">
    <div id="detailstitlediv" class="titlediv">Gegevens</div>
    <div id="detailscontentdiv" class="contentsdiv">
      <center>
        <b>Gemeente, contactpersoon en website</b>
      </center>
      <br />
      <table>
        <tr>
          <td>Gemeente:
            <select name="firstletter" onchange="javascript:flocations(this.value);">
              <?php
			  for ($na = 0; $na <= count($aalphabeth); $na++) {
				  ?>
                  <option value="<?php echo $aalphabeth[$na]; ?>"><?php echo $aalphabeth[$na]; ?></option>
                  <?php
			  };
			  ?>
            </select></td>
          <td><select name="loc" id="loc" style="width: 135px" />
            <option>1</option><option>2</option>
            </select>
            <font color="#ff0000">*</font></td>
        </tr>
        <tr>
          <td>Contactpersoon:</td>
          <td><input name="contact" /></td>
        </tr>
        <tr>
          <td>G.S.M.:</td>
          <td><input name="cell" /></td>
        </tr>
        <tr>
          <td>E-mail:</td>
          <td><input name="mail" /></td>
        </tr>
        <tr>
          <td>Website:</td>
          <td><input name="site" /></td>
        </tr>
      </table>
    </div>
  </div>
  <div id="hoursdiv">
    <div id="hourstitlediv" class="titlediv">Openingsuren</div>
    <div id="hourscontentdiv" class="contentsdiv">
      <center>
        <table id="hourstable" cellspacing="0">
          <tr>
            <th colspan="5" class="hourstableheader">Van ..u tot ..u</th>
          </tr>
          <?php
		for ($na = 0; $na < count($adays); $na++) {
			?>
          <tr>
            <th><?php echo substr($adays[$na], 0, 2); ?></th>
            <td><input size="3" name="<?php echo $adays[$na]; ?>starthour" maxlength="2">
              u
              <input size="3" name="<?php echo $adays[$na]; ?>startminutes" maxlength="2"></td>
            <td>tot</td>
            <td><input size="3" name="<?php echo $adays[$na]; ?>stophour" maxlength="2">
              u
              <input size="3" name="<?php echo $adays[$na]; ?>stopminutes" maxlength="2"></td>
            <?php //echo $aperiods[$na]; ?>
            </td>
          </tr>
          <?php
		};
		?>
          <tr>
            <td colspan="5" class="hourstablefooter"><marquee>
              &nbsp;<?php echo $schicricomment; ?>
              </marquee></td>
          </tr>
        </table>
      </center>
    </div>
  </div>
  <div id="picturediv">
    <div id="picturetitlediv" class="titlediv">&nbsp;</div>
    <div id="icerinkimgdiv"><br />
      <center>
        <textarea cols="45" rows="15" name="comment"></textarea>
      </center>
    </div>
  </div>
  <div id="linksdiv">
    <div id="linkstitlediv" class="titlediv">Opmerking</div>
    <div id="linkscontentdiv" class="contentsdiv">
      <center>
        <input type="submit" value="Verzenden"/>
        &nbsp;&nbsp;&nbsp;&nbsp;
        <input type="reset" value="Beginwaarden" />
      </center>
    </div>
  </div>
</form>

Het probleem zit in de gecombineerde code javascript-php waar ik een javascript array vul met gegevens uit een php array.
zet ik de eerste, werkende functie binnen dezelfde script tags als de gecombineerde code, dan werkt deze ook niet meer.
Hoe los ik dit op?

Hier is de pagina waar beide codes in staan, en waar ik de werkende code tussen zijn eigen script tags heb gezet zodat die werkt. Je zal zien dat de gecombineerde code ook werkt en alles netjes in een javascript array zet.

Alvast bedankt voor het helpen vinden van de oplossing.

Groetjes,

Jeroen
 
Laatst bewerkt:
Het probleem zat hem in de data in de database waar op heel wat rijen enkele en dubbele quotes stonden die het javascript verprutsten.
De functie die het eerst niet deed, doet het dus wel zoals die was.
Een kleine aanpassing was wel nodig omdat de opties leeg werden toegevoegd als de data niet voldeed aan de voorwaarden.

Oude functie:
PHP:
function flocations(sletter) {
    var objx = document.getElementById("loc");
    while (objx.length > 0) {
        objx.remove(objx.length-1);
    };
    for (var na = 0; na < alocations.length; na++) {
        var snewloc = document.createElement("option");
        if (na == 0) {
            snewloc.text = alocations[na];
        } else if (alocations[na].substr(0,1) == sletter) {
            snewloc.text = alocations[na];
        };
        objx.add(snewloc);
    };
};

Nieuwe functie:
PHP:
function flocations(sletter) {
    var objx = document.getElementById("loc");
    while (objx.length > 0) {
        objx.remove(objx.length-1);
    };
    for (var na = 0; na < alocations.length; na++) {
        var snewloc = document.createElement("option");
        if (na == 0) {
            snewloc.text = alocations[na];
            objx.add(snewloc);
        } else if (alocations[na].substr(0,1) == sletter) {
            snewloc.text = alocations[na];
            objx.add(snewloc);
        };
    };
};

Ik ben er dus zelf uit gekomen en deze vraag is opgelost.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan