Achim: problem bei javascript mit frames

Hallo,

der folgende Code funktioniert eigentlich bis auf eine Sache einwandfrei und die finde ich nicht.

Wenn in der Tabelle (iframe) (mit den checkboxen) meherer artikel angezeigt werden, so kann ich vom (header aus )php-seite mit dem javascript-functions) alle arrtikel auswählen oder nur einen usw..

Wenn aber nur ein artikel angezeigt wird gibt es probleme
der submit wird nicht ausgeführt.

Es sieht so aus als ob lenght keine anzahl liefert

Wie gesagt, aber nur wenn es ein artikel und nicht meherer sind die im iframe aufgelistet werden.

Hier der code aus dem itemsheader

<script language="JavaScript" type="text/javascript" >
<!--

function selectitem() {

var checkzahl =0;

for (var i=0;i<window.frames['custitems'].document.itemsformular.checkb.length;i++) {
    alert("test2");
    if(window.frames['custitems'].document.itemsformular.checkb[i].checked == true)
   checkzahl = checkzahl + 1;
   if (checkzahl > 1)
    alert("Bitte nur einen Artikel auswählen");
   if (checkzahl > 1)
    break;
  }

if (checkzahl == 1)

for (var i=0;i<window.frames['custitems'].document.itemsformular.checkb.length;i++) {
    if(window.frames['custitems'].document.itemsformular.checkb[i].checked == true){
    orderid = window.frames['custitems'].document.itemsformular.checkb[i].value;
                CostumerIDs = window.frames['custitems'].document.itemsformular.ncustid[i].value;
    zielstr1 = "edit_item.php?nCostumerID="+ CostumerIDs +"&nOrderID="+ orderid;
                zielstr2 = "cust_itemsheader.php?CostumerID="+ CostumerIDs;
    alert(zielstr1);

alert(checkzahl);
    //break;
    parent.heading.location.href=zielstr1;
                parent.text.location.href=zielstr2;
   }
  }
  }

function selectall(){
   if (document.selectallitems.checkall.checked == true){
    for (var i=0;i<window.frames['custitems'].document.itemsformular.checkb.length;i++) {
    if(window.frames['custitems'].document.itemsformular.checkb[i].checked == true){
   }else{ if(window.frames['custitems'].document.itemsformular.checkb[i].checked == false)
   window.frames['custitems'].document.itemsformular.checkb[i].checked = true;
            alert("alle ausgewählt");
            alert(window.frames['custitems'].document.itemsformular.checkb.length );
   }
  }
 }else{

for (var i=0;i<window.frames['custitems'].document.itemsformular.checkb.length;i++) {
    if(window.frames['custitems'].document.itemsformular.checkb[i].checked == true){
    window.frames['custitems'].document.itemsformular.checkb[i].checked = false;
   }else{ if(window.frames['custitems'].document.itemsformular.checkb[i].checked == false)
    alert("testausgabe");
   }
  }
 }

}

<form action="<?echo $PHP_SELF;?>" method="post" name="selectallitems" style="display:inline;">
  <tr><td>
  <table width="900" cellpadding="0" cellspacing="0" border="0">
  <tr >
    <td width="29" rowspan="3"  class="table_header_box" valign="middle">
      <input type="checkbox" name="checkall" value="checkbox" class="select_box_small" onClick="selectall()" >
 </td>
.
.
.
bla
</form>

<tr><td ><table border="0" cellpadding="0" cellspacing="0"><tr><td>
  <iframe src="cust_items.php?CostumerID=<? echo $_GET['CostumerID'];?>&String=<? echo $_GET['String']; ?>" name="custitems" id="custitems" width="918" marginwidth="0" height="230" marginheight="0" align="left" scrolling="auto" frameborder="0"></iframe>
  </td></tr>

und hier der codeausschnitt aus der  itemsseite die im iframe aufgerufen wird

<form action="test" name="itemsformular" style="display:inline;">
<table  width="900"  cellspacing="0" cellpadding="0" border="0">
<?php
if (!empty($_GET['CostumerID']) || !empty($_GET['String'])){

while($res_1->fetchInto($row_1,DB_FETCHMODE_ASSOC) === DB_OK){
        ?>
    <tr >
    <td width="28" rowspan="3" class="table_data_left"><div align="center">
      <input type="checkbox" name="checkb" value="<? echo $row_1['id']; ?>" class="select_box_small" >
    </div></td>
    <input type="hidden" name="ncustid" value="<? echo $row_1['costumerid']; ?>">
    <td width="24"  class="table_data_top" ><div align="center">1</div></td>
.
.
.
bla

</form>

hoffe e war nicht zuviel code

Gruss und danke schonmal

Achim

  1. hi,

    Es sieht so aus als ob lenght keine anzahl liefert

    klingt doch auch recht logisch, oder?

    wenn es nur ein element mit dem namen gibt, sieht JS wohl wenig sinn darin, dafür eine collection mit index-basiertem zugriff zu erstellen.

    also versuche doch mal, vorher _abzuprüfen_, ob es nur ein oder mehrere dieser elemente gibt.

    gruß,
    wahsaga

    --
    "Look, that's why there's rules, understand? So that you _think_ before you break 'em."
    1. Hallo,

      das geht soweit
      nur erhalte ich aus dem <input type="hidden" name="ncustid" value="<? echo $row_1['costumerid']; ?>">

      mit window.frames['custitems'].document.itemsformular.ncustid.value

      keinen wert

      dagegen vom
      input type="checkbox" name="checkb" value="<? echo $row_1['id']; ?>" class="select_box_small" >
      erhalte ich mit

      window.frames['custitems'].document.itemsformular.checkb.value

      einen wert

      warum?
      hat das was mit dem hidden-feld zu tun?

      Gruss Achim

      1. Hallo,

        sorry war mein fehler

        tatsächlich war value beim hidden-feld leer
        Gruss Achim