阿信请进来,还是你的无限关联菜单的问题。这次应该有挑战性。

keaizhong 2004-05-08 04:52:50
以下是我对你代码的一点点修改。
功能是添加选定项目下的关联菜单项目,不选就添加顶级。
我的问题是要是修改的其中项目应该如何从数据库里返回显示关联菜单项目?
如果没有表达清楚,就发短消息给我。谢谢了。
回顾:
xselect.js
==============
//**Power By Fason
//**Email : fason_pfx@hotmail.com
function Dsy()
{
this.Items = {};
}
Dsy.prototype.add = function(id,iArray)
{
this.Items[id] = iArray;
}
Dsy.prototype.Exists = function(id)
{
if(typeof(this.Items[id]) == "undefined") return false;
return true;
}

function change(c,v){
var str="0";
var dsy = window.select[c].dsy;
var s = window.select[c].Sel;
for(i=0;i<v;i++){ str+=("_"+document.getElementById(s[i]).selectedIndex);};
//alert(str);
document.all.temp.value += str+"|";
var ss=document.getElementById(s[v]);
with(ss){
length = 0;
if(dsy.Exists(str)){
var ar = dsy.Items[str];
for(i=0;i<ar.length;i++) {
var ot = ar[i][0];var ov = ar[i][1] ? ar[i][1] : ot;
options[length]=new Option(ot,ov);
}
options[length]=new Option("","");
options[length-1].selected = true;
}
else { options[0]=new Option("","");}
if(++v<s.length){change(c,v);}
else {
document.all.menustep.value = document.all.temp.value.split("|")[0];
document.all.temp.value = "";
}
}

}

function setup(iDsy,iS)
{
if(!window.select)
{ window.select = new Array();};
var counter = window.select.length;
window.select[counter] = { dsy: iDsy, Sel: iS };
//for(i=0;i<iS.length-1;i++)
//document.getElementById(iS[i]).onchange=new Function("change("+counter+","+(i+1)+")");
//change(counter,(i+1));
change(counter,0);
}

abc.php
==============
<?php
include("../connections/conn.php");

if($_POST["menuname"] != ""){
$query = "insert into catalogs(menustep,menuname)values('".$_POST["menustep"]."','".$_POST["menuname"]."');";
$result = mysql_query($query);
if($result){
echo "<script>alert('Insert Success')</script>";
}
}

?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>无标题文档</title>
</head>

<body>
<hr>
多级关联菜单:
<form name="form1" method="post" action="">
<select id="s1" name="s111" onChange="change(0,1)"></select>
<select id="s2" name="s211" onChange="change(0,2)"></select>
<select id="s3" name="s311" onChange="change(0,3)"></select>
<select id="s4" name="s411"></select>
<input name="temp" type="hidden" id="temp">
<br>
Menu Step
<input name="menustep" type="text" id="menustep">
<br>
Menu Name
<input name="menuname" type="text" id="menuname" maxlength="255">
<input type="submit" name="Submit" value="提交">
</form>
<script language="JavaScript" src="xselect.js"></script>
<?php
$query = "select * from catalogs order by menuid,menustep";
$result = mysql_query($query) or die(mysql_error());
$script = '
<SCRIPT LANGUAGE = JavaScript>
<!--
//** Power by Fason(2004-3-11)
//** Email:fason_pfx@hotmail.com

var dsy = new Dsy();
';

$members = array();
while($re = mysql_fetch_array($result)){
$members[$re["menustep"]][] = array($re["menuname"],$re["menuid"]);
}
//print_r($members);
foreach($members as $key => $val){
$arr .= 'dsy.add("'.$key.'",[';
$value = "";
foreach($val as $k => $v){
if($value != "") $value .= ",";
$value .= '["'.$v[0].'","'.$v[1].'"]';
}
$arr .= $value."]);\n";
}
$script .= $arr;
$script .= '
var s=["s1","s2","s3","s4"];
setup(dsy,s);
//-->
</SCRIPT>
';
echo $script;
mysql_free_result($result);
?>

</body>
</html>

...全文
82 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
keaizhong 2004-05-09
  • 打赏
  • 举报
回复
好了,谢谢。
原来我是搞错了那个值。
keaizhong 2004-05-08
  • 打赏
  • 举报
回复
没用耶。
不知道我表达清楚了没有??

效果和不用这个一样,没有项目被选定。
不过我取得的那个menustep的值出现0_-1_-1
fason 2004-05-08
  • 打赏
  • 举报
回复
window.onload = function() {
setup(dsy,s);
s1.value="广东省";s1.onchange();
s2.value="广州市";s2.onchange();
}

87,992

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧