2012-01-16 2 views
0

У меня есть таблица HTML, которая вызывается пользователем. В первом столбце строки есть раскрывающийся список, в котором они выбирают параметр, сгенерированный базой данных mysql.Javascript, чтобы отобразить следующую строку таблицы, если текущая строка опущена

Это для таблицы заказов, и заказ может состоять из 1 строки в 72 строки. Когда форма загружается, мне нужна только одна строка для отображения. При выборе опции в первой строке должна появиться вторая строка. когда опция выбрана из второй строки, появляется 3-я строка. и вплоть до конца, где строка 72 появляется только в случае выбора опции из строки 71.

Надеюсь, это имеет смысл.

Ниже мой HTML таблицы (5 строк) только

<table> 
<tr> 
    <td> 
     <select name="users" onchange="showUser(1, this.value)" size=1> 
     <OPTION VALUE=0> 
     <?=$optionssku?> 
     </SELECT> 
    </td> 
    <td> 
     <div id="txtHint1"><b>SKU Details will be seen here</b></div> 
    </td> 
</tr> 

<tr> 
    <td> 
     <select name="users" onchange="showUser(2, this.value)" size=1> 
     <OPTION VALUE=0> 
     <?=$optionssku?> 
     </SELECT> 
    </td> 
    <td> 
     <div id="txtHint2"><b>SKU Details will be seen here</b></div> 
    </td> 
</tr> 

<tr> 
    <td> 
     <select name="users" onchange="showUser(3, this.value)" size=1> 
     <OPTION VALUE=0> 
     <?=$optionssku?> 
     </SELECT> 
    </td> 
    <td> 
     <div id="txtHint3"><b>SKU Details will be seen here</b></div> 
    </td> 
</tr> 

<tr> 
    <td> 
     <select name="users" onchange="showUser(4, this.value)" size=1> 
     <OPTION VALUE=0> 
     <?=$optionssku?> 
     </SELECT> 
    </td> 
    <td> 
     <div id="txtHint4"><b>SKU Details will be seen here</b></div> 
    </td> 
</tr> 

<tr> 
    <td> 
     <select name="users" onchange="showUser(5, this.value)" size=1> 
     <OPTION VALUE=0> 
     <?=$optionssku?> 
     </SELECT> 
    </td> 
    <td> 
     <div id="txtHint5"><b>SKU Details will be seen here</b></div> 
    </td> 
</tr> 

</table> 

Я знаю, что это не форум кодирования, но я искал в сети на некоторое время для соответствующего примера и ничего не нашли. мои знания javascript очень достоверно ограничены, если кто-то может указать мне в правильном направлении, это было бы очень признательно.

Спасибо и уважение, Ryan Smith

Update 17 января 2012

Ниже приведен упрощенный сценарий, который я не могу получить, чтобы работать правильно.

<html> 
<head> 

<script type="text/javascript"> 
    function showUser(userNumber, str) 
    { 
    document.getElementById("r"+index).style.display="block" 
    } 
</script> 

</head> 
<body> 


<table> 
<tr id="r1"> 
<td><select name="users" onchange="showUser(1, this.value)"> 
     <OPTION VALUE=1> 
     1 
     </option> 
     <OPTION VALUE=2> 
     2 
     </option> 
     <OPTION VALUE=3> 
     3 
     </option> 
     </SELECT> 
</td> 
</tr> 
<tr id="r2" style="display:none;"> 
<td><select name="users" onchange="showUser(2, this.value)"> 
     <OPTION VALUE=1> 
     1 
     </option> 
     <OPTION VALUE=2> 
     2 
     </option> 
     <OPTION VALUE=3> 
     3 
     </option> 
     </SELECT> 
</td> 
</tr> 
</tr> 
<tr id="r3" style="display:none;"> 
<td><select name="users" onchange="showUser(3, this.value)"> 
     <OPTION VALUE=1> 
     1 
     </option> 
     <OPTION VALUE=2> 
     2 
     </option> 
     <OPTION VALUE=3> 
     3 
     </option> 
     </SELECT> 
</td> 
</tr> 
</table> 

</body> 
</html> 

Функция javascript, похоже, неправильно называется вызывающим событием.

Спасибо и наилучшие пожелания,

Ryan Smith

ответ

1

Устанны идентификаторы для строк в последовательном порядке, а затем установить дисплей свойство каждой строку для отображения: нет, за исключением первого и в showUser метод, вызываемый каждой строкой во время выполнения выбора, установите для отображения следующей строки: block. Вы получите его работу.

Например:

<table> 
<tr id="r1"> 
<td><select name="users" onchange="showUser(2, this.value)" size=1> 
     <OPTION VALUE=0> 
     <?=$optionssku?> </option> 
     </SELECT> 
</td> 
</tr> 
<tr id="r2" style="display:none;"> 
<td><select name="users" onchange="showUser(3, this.value)" size=1> 
     <OPTION VALUE=0> 
     <?=$optionssku?> </option> 
     </SELECT> 
</td> 
</tr> 
</table> 
function showUser(index,val) 
{ 
document.getElementById("r"+index).style.display="block" 
//your code 
} 

Edit Part

Ok Я предполагаю, что вы хотите просто изменить размер = 1 по размеру = 2 в теге. Вы сами получите значения в раскрывающемся списке.

правка Jan17 Эй изменить свою функцию, как показано ниже

<script type="text/javascript"> 
    function showUser(userNumber, str) 
    { 
    document.getElementById("r"+(userNumber+1)).style.display="block" 
    } 
</script> 

Надеется, что это помогает вам.

+0

Hi AmGates, Большое спасибо за оперативную помощь. Я сделал cahnges, однако содержимое моего раскрывающегося списка теперь появляется за пределами раскрывающегося списка. Что я делаю неправильно, код для подражания: – Smudger

+1

лучше добавить ** править ** к исходному вопросу и включить в него дополнительные поясняющие комментарии. Как вы можете видеть, это невозможно прочитать код в комментарии ;-) Удачи. – shellter

+1

@ Ryan Smith Привет, я отредактировал свой ответ, проверьте это. Надеюсь, что решает вашу проблему. – AmGates

0

Думал, что я вышлю окончательное решение здесь и полный код. Большое спасибо @AmGates на этом.

index.php

<html> 
<head> 
<script type="text/javascript"> 
    function showUser(userNumber, str) 
    { 
    document.getElementById("r"+(userNumber+1)).style.display="block"; 
    if (str=="") 
    { 
     document.getElementById("txtHint" + userNumber).innerHTML=""; 
     return; 
    } 
    if (window.XMLHttpRequest) 
    {// code for IE7+, Firefox, Chrome, Opera, Safari 
     xmlhttp=new XMLHttpRequest(); 
    } 
    else 
    {// code for IE6, IE5 
     xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
    } 

    xmlhttp.onreadystatechange=function() 
    { 
     if (xmlhttp.readyState==4 && xmlhttp.status==200) 
     { 
     document.getElementById("txtHint" + userNumber).innerHTML=xmlhttp.responseText; 
     } 
    } 
    xmlhttp.open("GET","getdata1.php?q="+str,true); 
    xmlhttp.send(); 
    } 
</script> 

</head> 
<body> 
<? 

$con = mysql_connect('localhost', DBUser', 'DBPass'); 
if (!$con) 
    { 
    die('Could not connect: ' . mysql_error()); 
    } 

mysql_select_db("DBName", $con); 


$skusql="SELECT packcode,concat(packcode, ' - ' , description) as description from skudata"; 
$resultsku=mysql_query($skusql); 

$optionssku=""; 

while ($row=mysql_fetch_array($resultsku)) { 

    $sku=$row["packcode"]; 
    $description=$row["description"]; 
    $optionssku.="<OPTION VALUE=\"$sku\">".$description; 
} 

?> 

<table border=1> 
<tr> 
    <td width=393>Product</td> 
    <td width=200>Category</td> 
    <td width=150>Selling Unit</td> 
    <td width=150>Grouping</td> 
    <td width=150>Full Case QTY</td> 
</tr> 
</table> 

<table> 
<tr id="r1"> 
    <td> 
     <select name="users" onchange="showUser(1, this.value)"> 
     <OPTION VALUE=0> 
     <?=$optionssku?> 
     </SELECT> 
    </td> 
    <td> 
     <div id="txtHint1"><b>SKU Details will be seen here</b></div> 
    </td> 
</tr> 

<tr id="r2" style="display:none;"> 
    <td> 
     <select name="users" onchange="showUser(2, this.value)"> 
     <OPTION VALUE=0> 
     <?=$optionssku?> 
     </SELECT> 
    </td> 
    <td> 
     <div id="txtHint2"><b>SKU Details will be seen here</b></div> 
    </td> 
</tr> 

<tr id="r3" style="display:none;"> 
    <td> 
     <select name="users" onchange="showUser(3, this.value)"> 
     <OPTION VALUE=0> 
     <?=$optionssku?> 
     </SELECT> 
    </td> 
    <td> 
     <div id="txtHint3"><b>SKU Details will be seen here</b></div> 
    </td> 
</tr> 

<tr id="r4" style="display:none;"> 
    <td> 
     <select name="users" onchange="showUser(4, this.value)"> 
     <OPTION VALUE=0> 
     <?=$optionssku?> 
     </SELECT> 
    </td> 
    <td> 
     <div id="txtHint4"><b>SKU Details will be seen here</b></div> 
    </td> 
</tr> 

<tr id="r5" style="display:none;"> 
    <td> 
     <select name="users" onchange="showUser(5, this.value)"> 
     <OPTION VALUE=0> 
     <?=$optionssku?> 
     </SELECT> 
    </td> 
    <td> 
     <div id="txtHint5"><b>SKU Details will be seen here</b></div> 
    </td> 
</tr> 
<tr id="r6" style="display:none;"> 
    <td> 
     <select name="users" onchange="showUser(6, this.value)"> 
     <OPTION VALUE=0> 
     <?=$optionssku?> 
     </SELECT> 
    </td> 
    <td> 
     <div id="txtHint6"><b>SKU Details will be seen here</b></div> 
    </td> 
</tr> 
<tr id="r7" style="display:none;"> 
    <td> 
     <select name="users" onchange="showUser(7, this.value)"> 
     <OPTION VALUE=0> 
     <?=$optionssku?> 
     </SELECT> 
    </td> 
    <td> 
     <div id="txtHint7"><b>SKU Details will be seen here</b></div> 
    </td> 
</tr> 
<tr id="r8" style="display:none;"> 
    <td> 
     <select name="users" onchange="showUser(8, this.value)"> 
     <OPTION VALUE=0> 
     <?=$optionssku?> 
     </SELECT> 
    </td> 
    <td> 
     <div id="txtHint8"><b>SKU Details will be seen here</b></div> 
    </td> 
</tr> 
<tr id="r9" style="display:none;"> 
    <td> 
     <select name="users" onchange="showUser(9, this.value)"> 
     <OPTION VALUE=0> 
     <?=$optionssku?> 
     </SELECT> 
    </td> 
    <td> 
     <div id="txtHint9"><b>SKU Details will be seen here</b></div> 
    </td> 
</tr> 
<tr id="r10" style="display:none;"> 
    <td> 
     <select name="users" onchange="showUser(10, this.value)"> 
     <OPTION VALUE=0> 
     <?=$optionssku?> 
     </SELECT> 
    </td> 
    <td> 
     <div id="txtHint10"><b>SKU Details will be seen here</b></div> 
    </td> 
</tr> 

</table> 

</body> 
</html> 

GetData1.PHP

<?php 
$q=$_GET["q"]; 

$con = mysql_connect('localhost', 'DBUser', 'DBPass'); 
if (!$con) 
    { 
    die('Could not connect: ' . mysql_error()); 
    } 

mysql_select_db("DBName", $con); 

$sql="SELECT Category, SellingUnits,Grouping,CasesPerPallet,ShrinksPerPallet FROM skudata WHERE packcode = '".$q."'"; 

$result = mysql_query($sql); 



while($row = mysql_fetch_array($result)) 
    { 
    echo "<table border=1><tr>"; 
    echo "<td width=200>".$row['Category']."</td>"; 
    echo "<td width=150>".$row['SellingUnits']."</td>"; 
    echo "<td width=150>".$row['Grouping']."</td><td width=150>"; 
    if($row['SellingUnits']=="CS"){echo $row['CasesPerPallet'];} elseif($row['SellingUnits']=="SHR") {echo $row['ShrinksPerPallet'];} 
    echo "</td></tr></table>"; 
    } 

mysql_close($con); 
?> 

Еще раз спасибо всем на этом сайте, очень ценна.

Смежные вопросы