在練習那種php和HTML混合的頁面,php從資料庫取出資料後迴圈輸出,那麼連結的javascript頁面如何擷取那個每個資料相對應的id值,是用來欄目分類的
var fi= document.getElementById(lanmu).value;
php頁面裡
alert只顯示出fi ,不能顯示相應value裡的id值
回複討論(解決方案)
頁面還沒有載入完,dom對象沒有初始化, 所以document.getElementById(lanmu).value;
如果這裡的lanmu不是js變數的話就加上引號document.getElementById(‘lanmu').value
建議把
window.load=function(){ var fi= document.getElementById(lanmu).value;}
或者用JQuery更方便:
另外想請教一下
javascript 調用document.getElementsById(lanmu).value; 再alert根本沒反應
document.getElementsByName(lanmu),alert顯示undefine
這是什麼情況?
頁面還沒有載入完,dom對象沒有初始化, 所以document.getElementById(lanmu).value;
如果這裡的lanmu不是js變數的話就加上引號document.getElementById(‘lanmu').value
建議把
window.load=function(){ var fi= document.getElementById(lanmu).value;}
或者用JQuery更方便:
第一種可以,但是原來用的javascript代碼是否需要全部改成jquery,
加入jquery後,一點擊 php頁面,就彈出那個欄目的id值,問題是如何將id值轉成javascript中的變數
試著這樣寫
$(function(){
var fid=$('#fi').val();
});
反覆彈出提示框,其實想用fid變數,放到url傳出去
說錯了,是第二種可以
看不懂你打算做什麼
你描述的東西,在你的代碼中都不存在
showtype.php:用來顯示form表單,表單裡有一級和相對應的二級欄目名稱
include ('conn/conn.php'); $sqlf ="select * from tb_class where supid=0";//選擇父類資料 $sqlz ="select * from tb_class where supid!=0"; $shujuf=mysql_query($sqlf); //$shujuz=mysql_query($sqlz); ?>
javascript:用來檢測上一個表單,設定xmlhttp的url,傳到changtype.php
function modifytype(key){
var nm = 'moditype1';
//var fid = document.getElementById(fi).value;//這樣不行
//var fi='$fi';//這樣不行
//var fid=$('#fi').val();//這樣不行
var names = document.getElementById(nm).value;
if(names == ""){
alert('請填寫類別名稱');
document.getElementById(nm).focus();
return false;
}
var url = "changetype.php?action=m&names="+names+"&key="+fid;
xmlhttp.open("GET",url,true);
xmlhttp.onreadystatechange = check;
xmlhttp.send(null);
}
function delbigtype(key){
if(confirm("您要刪除的是一級類,確定要刪除嗎")){
var url = "changetype.php?action=bd&key="+fid;
xmlhttp.open("GET",url,true);
xmlhttp.onreadystatechange = check;
xmlhttp.send(null);
}else{
return false;
}
}
function delsmalltype(key){
if(confirm("確定要刪除選中的項目嗎?一旦刪除將不能恢複!")){
var url = "changetype.php?action=sd&key="+fid;
xmlhttp.open("GET",url,true);
xmlhttp.onreadystatechange = check;
xmlhttp.send(null);
}else{
return false;
}
}
function check(){
if(xmlhttp.readyState == 4){
if(xmlhttp.status == 200){
var msg = xmlhttp.responseText;
if(msg == "1"){
alert('類名重複');
}else if(msg == "2"){
alert('操作失敗!');
}else (msg == "3"){
alert('操作成功');
location='showtype.php';
} else if(msg == "4"){
alert('該大類有子類,不能刪除');
}else (msg == "0"){
alert('未知錯誤!'+'\n錯誤碼:'+msg);
}
}
}
}
還有一個是changtype.php,用來修改添加欄目
/**********************************
$reback說明:
0、未知錯誤
1、類名重複
2、操作失敗
3、操作成功
4、有二級分類
***********************************/
$conn=mysql_connect("localhost","root","");
mysql_select_db("db_database22",$conn);
mysql_query("set names utf8");
$action = $_GET['action'];//擷取JavaScript檔案中action
$reback = '';//建立返回變數
if($action == 'm'){//如果動作值為m??修改欄目名稱
$names = $_GET['names'];
$key = $_GET['key'];
$sql = "select * from tb_class where name = '$names'";
$rst = $conn->execute($sql);//執行選擇資料庫
if($rst->RecordCount() == 1){//如果選擇成功
$reback = '1';//傳回值為1
}else{
$updatesql = "select * from tb_class where id = ".$key;
$updaterst = $conn->execute($updatesql);
$upd = array();
$upd["id"] = $key;
$upd["name"] = $names;
$update = $conn->GetUpdateSQL($updaterst,$upd);//修改資料庫
if($conn->execute($update) == false){//如果修改成功
$reback = '2';//傳回值為2
}else{
$reback = '3';//傳回值為3
}
}
}else if($action == 'sd'){//如果動作值為sd??刪除子類欄目
$key = $_GET['key'];
$delsql = "delete from tb_class where id = ".$key;
if($conn->execute($delsql) == false){
$reback = '2';
}else{
$reback = '3';
}
}else if($action == 'bd'){//如果動作值為bd??刪除父類欄目
$key = $_GET['key'];
$sql = "select * from tb_class where supid = ".$key;
$rst = $conn->execute($sql);
if($rst->RecordCount() >= 1){
$reback = '4';
}else{
$delsql = "delete from tb_class where id = ".$key;
if($conn->execute($delsql) == false){
$reback = '2';
}else{
$reback = '3';
}
}
}else{
$reback = '0';
}
echo $reback;
?>
基本是書上的例子,原來是用smarty模板引擎的,想改成不用smary的,發現直接改不行
現在有幾個問題:
1、 document.getElementById(fi).value 取不到值,點修改沒反應。在input隱藏欄位那塊加個onbur後,彈出提示框,只有一個1
也就是“電子類"的資料表id ,重新整理一次都出現這個,點擊其他欄目的修改鍵,也是1,不顯示這個欄目id.如果將那個inpu隱藏樣式改為不隱藏,則可以顯示所有欄目所對應id.說明php頁面已經取到每個欄目的id值了,但javascript 頁面取不到input隱藏欄位的value值,也就是的值。
2、第一個PHP檔案,父類修改後面的原來是 onclick="javascript:modifytype({$key} ),這是什麼意思,{$key}是smarty模板變數吧,這個應該怎麼改?
3、changtype.js的function check() 不起作用怎麼回事?類名重複等提示都沒有
AJAX+JSON,用JQUERY很方便,直接支援
用了jquery可以取得值,用each遍曆查詢。問題現在每次點擊某一個按鍵,重新整理一次提示框自動彈出來,迴圈顯示不同的值。本來想按哪一項旁邊的鍵就彈出相對應的值,而不是自動提示,現在不知道怎麼設定。
$("button").click(function(){
$("input:hidden").each(function(){
alert($(this).val())