Avatar billede danic Nybegynder
12. april 2004 - 17:27 Der er 42 kommentarer og
1 løsning

Finde elementer

Hvorfor vil "document.getElementsByTagName("choice")[0].options[0]" ikke give mig option elementet under min select???

<FORM name="form" method="post" action="">
<SELECT NAME="choice" onChange="this.form.submit();">
    <OPTION>hgjf zgjhgjzhgj</OPTION>
    <OPTION>dsfghhjh</OPTION>
</SELECT>
<input type="button" onclick='alert(document.getElementsByTagName("choice")[0].options[0].value);'>
</FORM>
Avatar billede roenving Novice
12. april 2004 - 17:37 #1
Fordi tagName er select på din boks !-)

Men sæt et id på, så er den fuldt kompatibel med IE5+, NS6+, Mozilla m.m.m.

<FORM name="form" method="post" action="">
<SELECT NAME="choice" id="choice" onChange="this.form.submit();">
    <OPTION>hgjf zgjhgjzhgj</OPTION>
    <OPTION>dsfghhjh</OPTION>
</SELECT>
<input type="button" onclick='alert(document.getElementById("choice").options[0].value);' value="Vis værdi med getElementById">
<input type="button" onclick='alert(this.form.choice.options[0].text);' value="Vis tekst med this.form">
</FORM>

-- og din option har ikke en .value men en .text !o]
Avatar billede danic Nybegynder
12. april 2004 - 17:42 #2
mange tak... svar == point
Avatar billede roenving Novice
12. april 2004 - 17:43 #3
Velbekomme '-)
Avatar billede roenving Novice
12. april 2004 - 17:43 #4
;O)
Avatar billede danic Nybegynder
12. april 2004 - 18:13 #5
Jeg kan ikke få fat i den hvis jeg prøver samme i en iframe:

<html>
<head>
<script type="text/javascript">
elm = document.getElementById("choice").options;
for (i=0;i<elm.length;i++){
  elm[i] = null;
}
  <?php
    echo "sel2 = new Array(";
    echo "\""1|batman\",";
    echo "\""2|riben\"";
    echo ");";
?>

for (i=0;i<sel2.length;i++){
  str = sel2[i].split("|")
  elm.options[i]= new Option(str[1],str[0]);
}
</script>
</head>
</html>

Den får ikke fat i choice elementet... mangler jeg parent eller et andet fedt trick når det er i en iframe (f.eks. navnet på iframen)
Avatar billede roenving Novice
12. april 2004 - 18:19 #6
Hvis du ikke er i samme window-objekt (og en iframe er et andet window-objekt end hoved-dokumentet !-), kan du ikke får fat i den uden at finde frem til frame-dokumentet:

elm = window.IFRAMENAME.document.getElementById("choice").options;

elm.length = 0;//skulle ligeså effektivt udrydde dine options !-)
Avatar billede danic Nybegynder
12. april 2004 - 20:39 #7
Hmmm jeg får stadig ikke noget med over?

Hovedfilen:

<FORM name="form" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<SELECT name="country" onchange="skjult.location = 'selectvalue.php?val='+this[this.selectedIndex].value;">
  <?php
  $optionblock = makeDropDownSelectBox (database, retailers, country, retailerid,  "Select country");
  echo "$optionblock";
  ?>
</SELECT>
<br>
<SELECT NAME="choice" onChange="this.form.submit();">
    <OPTION>Select city</OPTION>
</SELECT>
</FORM>
<iframe name="skjult" style="height:0px;width:0px;border:0px;"></iframe>

selectvalue.php
<html>
<head>
<script type="text/javascript">
elm = window.skjult.document.getElementById("choice").options;

for (i=0;i<elm.length;i++){
  elm[i] = null;
}

  <?php
    $sel = $_GET['val'];
    $query = mysql_query("SELECT town_city, retailerid FROM retailers WHERE country='$sel'");
   
    echo "sel2 = new Array(";
    while($row = mysql_fetch_array($query))
    {
        echo "\"".$row['retailerid']."|".$row['town_city']."\"";
    }
    echo ");";
?>

for (i=0;i<sel2.length;i++){
  str = sel2[i].split("|")
  elm.options[i]= new Option(str[1],str[0]);
}
</script>
</head>
</html>
Avatar billede roenving Novice
12. april 2004 - 21:01 #8
-- og det er vel en tavetosse, at du ikke har src="selectvalue.php" i iframe-tagget !-)

Men den vej, så:

elm = parent.document.getElementById("choice").options;

OG !-)

<SELECT NAME="choice" id="choice" onChange="this.form.submit();">
    <OPTION>Select city</OPTION>
</SELECT>
Avatar billede roenving Novice
12. april 2004 - 21:03 #9
Hov, der var da lige noget andet:

<script type="text/javascript">
elm = window.skjult.document.getElementById("choice");

for (i=0;i<elm.options.length;i++){
  elm.options[i] = null;
}

Du kan jo ikke blande options-arrayet sammen med selve select-elementet !-)
Avatar billede danic Nybegynder
12. april 2004 - 21:22 #10
Det vil stadig ikke lykkes ->

<FORM name="form" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<SELECT name="country" onchange="skjult.location = 'selectvalue.php?val='+this[this.selectedIndex].value;">
  <?php
  $optionblock = makeDropDownSelectBox (sv_cmsbuilderdk, retailers, country, retailerid,  "Select country");
  echo "$optionblock";
  ?>
</SELECT>
<br>
<SELECT NAME="choice" id="choice" onChange="this.form.submit();">
    <OPTION>Select city</OPTION>
</SELECT>
</FORM>
<iframe name="skjult" src="selectvalue.php" style="height:0px;width:0px;border:0px;"></iframe>


<html>
<head>
<script type="text/javascript">
elm = window.skjult.document.getElementById("choice");

for (i=0;i<elm.options.length;i++){
  elm.options[i] = null;
}

    <?php
    //$sel = $_GET['val'];
    //$query = mysql_query("SELECT town_city, retailerid FROM retailers WHERE country='$sel'");
   
    echo "sel2 = new Array(";
    echo "\""1|roskilde\",";
    echo "\""2|greve\"";
   
    echo ");";
    ?>

for (i=0;i<sel2.length;i++){
  str = sel2[i].split("|")
  elm.options[i]= new Option(str[1],str[0]);
}
</script>
</head>
</html>
Avatar billede roenving Novice
12. april 2004 - 21:29 #11
Øv, jeg fik _ikke_ blandet begge rettelser sammen:

elm = parent.document.getElementById("choice");
Avatar billede danic Nybegynder
12. april 2004 - 21:42 #12
Jeg får stadig ikke mit array med over, her er output fra formen,

<FORM name="form" method="post" action="/logic/wheretobuy/wheretobuy.php">
<SELECT name="country" onchange="skjult.location = 'selectvalue.php?val='+this[this.selectedIndex].value;">
 
<!-- Drop down box indhold -->
<OPTION value="0" SELECTED>Select country</OPTION><OPTION value="1">Denmark</OPTION></SELECT>
<br>
<SELECT NAME="choice" id="choice" onChange="this.form.submit();">
    <OPTION>Select city</OPTION>
</SELECT>
</FORM>
<iframe name="skjult" src="selectvalue.php" style="height:0px;width:0px;border:0px;"></iframe>
Avatar billede roenving Novice
12. april 2004 - 21:49 #13
Har du stadig udkommenteret dit database-opslag ?-)

-- og prøv at sætte en alert(elm.length) ind i scriptet (efter initieringen !-)
Avatar billede danic Nybegynder
12. april 2004 - 21:58 #14
Jeg ser ikke en alert(elm.length) da den ligger i iframen, og der er ingen database opslag

elm = parent.document.getElementById("choice");

for (i=0;i<elm.options.length;i++){
  elm.options[i] = null;
}
<?php 
    echo "sel2 = new Array(";
    echo "\""1|batman\",";
    echo "\""2|robin\"";
    echo ");";
  ?>

vil først se at jeg får data med over.
Avatar billede roenving Novice
12. april 2004 - 22:20 #15
Får du ikke alerts, fordi de ligger i en skjult iframe ?-)

-- det gør jeg da !-)

Er du sikker på at elementerne er skabt, når javascriptet afvikles, prøv:

<body onload="if(skjult)skjult.data()"> i hoveddokumentet

og

i iframen:

<script type="text/javascript">
function data(){
elm = window.skjult.document.getElementById("choice");

...

  elm.options[i]= new Option(str[1],str[0]);
}
}
</script>
Avatar billede danic Nybegynder
12. april 2004 - 22:27 #16
Samme resultat, sker stadig intet :(
Avatar billede roenving Novice
12. april 2004 - 22:42 #17
Får du alerts, når du indsætter en alert i koden ?-)
Avatar billede roenving Novice
12. april 2004 - 22:44 #18
Prøv at sætte iframen til at være 'noget' i størrelse, så du kan se, at siden findes !-)
Avatar billede roenving Novice
12. april 2004 - 22:45 #19
s*****

det skal stadig være parent.document !-)
Avatar billede danic Nybegynder
12. april 2004 - 22:52 #20
Hvis jeg indsætter:
<script language="JavaScript">
alert("SADHASDADS");
</script>
i hovedsiden giver det en alert, men hvis jeg indsætter den i iframen sker der intet!
Avatar billede roenving Novice
12. april 2004 - 22:57 #21
Så tyder det på, at du ikke har fat i den rigtige sti eller noget, for jeg får da alerts, når jeg tester !-)

Prøv at give iframen en størrelse ...
Avatar billede danic Nybegynder
13. april 2004 - 07:05 #22
Jeg har prøvet det ene og det andet unden at få en alert, begge filer ligger i samme katalog så jeg kan ikke forstå hvad der sker, eller rettere hvad der ikke sker.

Kan du ikke poste indholdet af de filer som der virker for dig, så jeg ved koden virker 100% før jeg forsætter med mine 2 filer her.
Avatar billede roenving Novice
13. april 2004 - 19:46 #23
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
<html>

<head>

<title>Tomt dokument</title>
</head>

<body onresize onload>
<iframe src="iframe.html" id="IFRAMEID"></iframe>
</body>

</html>

--------------------------------------------------------------------------------------

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>iframe</title>
<meta name="Generator" content="Stone's WebWriter 4">
<meta name="keywords" content="søgeord adskilt af komma">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link rel="stylesheet" type="text/css" href="style/style.css">
<style type="text/css">
html,body{margin:0px;padding:0px;}
</style>
<script language="javascript" type="text/javascript">
function ifrHeight(){
var t=document.body.offsetHeight;
if(parent!=window)parent.document.getElementById('IFRAMEID').style.height=t+'px';
}
alert('hej')
</script>
</head>

<body onresize onload="ifrHeight()">
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
</body>

</html>
Avatar billede danic Nybegynder
13. april 2004 - 20:12 #24
Med din kode får jeg alert box hej + et textarea :)
Avatar billede danic Nybegynder
13. april 2004 - 20:20 #25
Hvis jeg retter hovedsiden til min kode:

<?PHP
require_once("../../connections/dbconnect.php");
require($_SERVER["DOCUMENT_ROOT"] . "/admin/classes/form.class.php");
?>
<FORM name="form" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<SELECT name="country" onchange="iframe.location='iframe.php?val='+this[this.selectedIndex].value">



  <?php
  $optionblock = makeDropDownSelectBox (sv_cmsbuilderdk, retailers, country, retailerid, "Select country");
  echo "$optionblock";
  ?>
</SELECT>
<br>
<SELECT NAME="choice" id="choice" onChange="this.form.submit();">
    <OPTION>Select city</OPTION>
</SELECT>
</FORM>
<!--<iframe name="window" src="selectvalue.php" style="height:0px;width:0px;border:0px;"></iframe>-->
<iframe src="iframe.php" id="IFRAMEID"></iframe>
Avatar billede danic Nybegynder
13. april 2004 - 20:20 #26
får jeg stadig en alert!
Avatar billede roenving Novice
13. april 2004 - 20:24 #27
Så er der i hvert fald kontakt, som der åbenbart ikke var før !-)

Så prøv at kopiere koden fra din selectvalue.php ind i iframe-dokumentet ...
Avatar billede danic Nybegynder
13. april 2004 - 20:37 #28
echo "sel2 = new Array(";
echo "\""1|batman\"",";
echo "\""2|robin\"";
echo ");";

Parse error i den linie med batman
Avatar billede danic Nybegynder
13. april 2004 - 20:45 #29
Nu ser den sådan her ud men den virker stadig ikke:

<html>
<head>
<title>iframe</title>
<meta name="Generator" content="Stone's WebWriter 4">
<meta name="keywords" content="søgeord adskilt af komma">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link rel="stylesheet" type="text/css" href="style/style.css">
<style type="text/css">
html,body{margin:0px;padding:0px;}
</style>
<script language="javascript" type="text/javascript">

function data(){
elm = window.skjult.document.getElementById("choice");
for (i=0;i<elm.options.length;i++){
  elm.options[i] = null;

}
    <?php
    echo "sel2 = new Array(";
    echo "\"1|batman\",";
    echo "\"2|robin\"";
    echo ");";
    ?>

for (i=0;i<sel2.length;i++){
  str = sel2[i].split("|")
  elm.options[i]= new Option(str[1],str[0]);
}
}
</script>
Avatar billede roenving Novice
13. april 2004 - 21:00 #30
Har du også:

</head>
<body onload="data()">
</body>
</html>

-- og så skal du stadig huske:

function data(){
elm = parent.document.getElementById("choice");
Avatar billede danic Nybegynder
13. april 2004 - 21:09 #31
Nu ser den sådan her ud, jeg får en hej alert og textarea feltet er helt tomt,

<html>
<head>
<title>iframe</title>
<meta name="Generator" content="Stone's WebWriter 4">
<meta name="keywords" content="søgeord adskilt af komma">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link rel="stylesheet" type="text/css" href="style/style.css">
<style type="text/css">
html,body{margin:0px;padding:0px;}
</style>
<script language="javascript" type="text/javascript">

function data(){
elm = parent.document.getElementById("choice");
for (i=0;i<elm.options.length;i++){
  elm.options[i] = null;

}
    <?php
    echo "sel2 = new Array(";
    echo "\"1|batman\",";
    echo "\"2|robin\"";
    echo ");";
    ?>

for (i=0;i<sel2.length;i++){
  str = sel2[i].split("|")
  elm.options[i]= new Option(str[1],str[0]);
}
}
alert('hej')
</script>
</head>

<body onresize onload="ifrHeight()">
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
</body>
</html>
Avatar billede danic Nybegynder
13. april 2004 - 21:12 #32
Faktisk får jeg en hej alert hver gang jeg ændre værdien i den første dropdown.
Avatar billede roenving Novice
13. april 2004 - 21:17 #33
Det er iframen, ikke et text-area, prøv lige at udskifte med:

I<br>
F<br>
R<br>
A<br>
M<br>
E


-- og det er jo helt fint, at du får hej'et, men udkommenter den, og sæt data()-funktionen på body:

}
}
//alert('hej')
</script>
</head>

<body onload="data()">
Avatar billede danic Nybegynder
13. april 2004 - 21:37 #34
Så kan jeg se mit array i boksen, sel2 = new Array("1|batman","2|robin");
Avatar billede roenving Novice
13. april 2004 - 21:56 #35
<html>
<head>
<title>iframe</title>
<meta name="Generator" content="Stone's WebWriter 4">
<meta name="keywords" content="søgeord adskilt af komma">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link rel="stylesheet" type="text/css" href="style/style.css">
<style type="text/css">
html,body{margin:0px;padding:0px;}
</style>
<script language="javascript" type="text/javascript">

function data(){
elm = parent.document.getElementById("choice");
for (i=0;i<elm.options.length;i++){
  elm.options[i] = null;

}
    <?php
    echo "sel2 = new Array(";
    echo "\"1|batman\",";
    echo "\"2|robin\"";
    echo ");";
    ?>

for (i=0;i<sel2.length;i++){
  str = sel2[i].split("|")
  elm.options[i]= new Option(str[1],str[0]);
}
}
//alert('hej')
</script>
</head>

<body onload="data()">
I<br>
F<br>
R<br>
A<br>
M<br>
E<br>
<br>
<br>
</body>
</html>
Avatar billede danic Nybegynder
13. april 2004 - 22:19 #36
Nu får jeg batman og robin i min anden dropdown, det underlige er bare at hvis jeg slår mit database kald til (beholder batman og robin) så bliver boksen helt tom:

    <?php
    //$sel = $_GET['val'];
    //$query = mysql_query("SELECT town_city, retailerid FROM retailers WHERE country='$sel'");
   
      echo "sel2 = new Array(";
    //while($row = mysql_fetch_array($query))
    //{
    echo "\"".$row['retailerid']."|".$row['town_city']."\",";
    //}
   
    echo "\"1|batman\",";
    echo "\"2|robin\"";
    echo ");";
    ?>
Avatar billede roenving Novice
13. april 2004 - 22:29 #37
Så prøv at sætte en alert ind after ?> !-)

alert(sel2);
Avatar billede danic Nybegynder
13. april 2004 - 22:52 #38
Den kan ikke forstå min php query,
hvis denne linie bliver slået til:
$query = mysql_query("SELECT town_city, retailerid FROM retailers WHERE country='$sel'");

så udebliver min alert?
Avatar billede danic Nybegynder
13. april 2004 - 22:53 #39
Har checket SELECT town_city, retailerid FROM retailers WHERE country='Denmark' i phpadmin den virker som den skal.
Avatar billede roenving Novice
13. april 2004 - 23:05 #40
Prøv at

echo "$sel";
Avatar billede danic Nybegynder
13. april 2004 - 23:24 #41
$sel er ok, den kommer fra dropdown på hovedsiden.

<?php
$query = mysql_query("SELECT town_city, retailerid FROM retailers WHERE country='Denmark'");
   
echo "sel2 = new Array(";
while($row = mysql_fetch_array($query))
    {
    echo "\"".$row['retailerid']."|".$row['town_city']."\",";
    }   
    echo "\"1|batman\",";
    echo "\"2|robin\"";
    echo ");";
    ?>
men <? echo "$sel2"; ?> er helt tom og hverken batman eller robin bliver vist når jeg slår sql'en til ?
Avatar billede danic Nybegynder
14. april 2004 - 17:30 #42
hehe det hjælper at åbne databasen :)

Super mange tak for hjælpen!!!
Avatar billede roenving Novice
14. april 2004 - 19:06 #43
-- og tak for points ;~}
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester

Seneste spørgsmål Seneste aktivitet
I går 10:21 Ny printer, men hvilken Af mort1 i Printere
13/0819:41 USB på Linux Af Uvanga i Linux
12/0818:26 Hvilken type mus Af mort1 i PC
11/0813:21 ms Forms Af leahcim i Andet software
10/0821:30 Blokeret på Snapchat? Af LineP i Chat & Messaging