PHP と HTML を組み合わせたページを練習する場合、PHP はデータベースからデータを取得し、それをループで出力します。リンクされた JavaScript ページは、列の分類に使用される各データに対応する ID 値をどのように取得しますか? getElementById(lanmu).value; PHP ページ内 アラートは fi のみを表示し、対応する値に ID 値を表示することはできません
ディスカッション (解決策) に返信
ページはまだロードされておらず、dom オブジェクトは初期化されていないため、 document.getElementById (lanmu).value;
ここの lanmu が js 変数ではない場合は、引用符を追加します document.getElementById('lanmu').value
window.load=function(){ var fi= document.getElementById(lanmu).value;} ログイン後にコピー
ログイン後にコピー
またはそれを使用することをお勧めしますJQuery を使用すると便利です:
<script src="http://cdn.bootcss.com/jquery/1.11.3/jquery.min.js"></script><script>$(function(){alert( $('#lanmu').val());});</script> ログイン後にコピー
ログイン後にコピー
またアドバイスをお願いします
JavaScript が document.getElementsById(lanmu).value; を呼び出した後、アラートがまったく応答しません document.getElementsByName(lanmu)アラートに未定義が表示されます 何が起こっていますか?
ページがまだロードされておらず、DOM オブジェクトが初期化されていないため、 document.getElementById(lanmu).value;
ここで lanmu が js 変数でない場合は、引用符を追加します document.getElementById('lanmu' ).value
window.load=function(){ var fi= document.getElementById(lanmu).value;} ログイン後にコピー
ログイン後にコピー
を使用することをお勧めします。 または、JQuery を使用する方が便利です:
<script src="http://cdn.bootcss.com/jquery/1.11.3/jquery.min.js"></script><script>$(function(){alert( $('#lanmu').val());});</script> ログイン後にコピー
ログイン後にコピー
最初のオプションは問題ありませんが、元の JavaScript コードをすべて jquery に変更する必要がありますか? jqueryを追加し、phpページをクリックすると、その列にid値が表示されます。問題は、id値をjavascriptの変数に変換する方法です
次のように書いてみてください
$(function(){
var fid=$ ('#fi').val();
});
繰り返しプロンプトボックスが表示されますが、実際には fid 変数を使用して URL に入れて送信したいのです
間違っています。それは 2 番目のオプションです
あなたが何をしようとしているのか理解できません
あなたが説明した内容はどれもあなたのコードには存在しません
showtype.php: フォームのフォームを表示するために使用されます
include ('conn/conn.php'); $sqlf ="select * from tb_class where supid=0";//親を選択クラスデータ $sqlz ="supid!=0 から * を選択" $shujuf=mysql_query($sqlz); <script> <br> var fid ="<?php echo $rows1['id'];?>";//fid は changtype.js ファイルに渡されます <br> </script>
javascript: 使用前の形式を検出するには、xmlhttp の URL を設定して changtype.php に渡します
functionmodifytype(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 == ""){
warning('カテゴリ名を入力してください')
document.getElementById(nm).focus(); false;
}
var url = "changetype.php ?action=m&names="+names+"&key="+fid;
xmlhttp.onreadystatechange = check; .send(null);
}
function delbigtype( key){
if(confirm("削除したいのは第 1 レベルのクラスですが、削除してもよろしいですか?")){
var url = "changetype.php?action=bd&key="+fid;
xmlhttp.open(" GET",url,true);
xmlhttp.send(null);
return false ;
}
}
function delsmalltype(key){
if(confirm("OK 選択した項目を削除しますか?一度削除すると復元できません!")){
var url = "changetype.php?action=sd&key="+fid;
xmlhttp.open("GET",url,true);
xmlhttp.onreadystatechange = check;
xmlhttp .send(null);
}else{
return false;
関数 check(){
if(xmlhttp.readyState == 4){
if(xmlhttp.status == 200){
var msg = xmlhttp.responseText;
if(msg == "1"){
alerse('重複したクラス名');
}else if(msg == "2"){
alert('操作が失敗しました!' );
}else (msg == "3"){
alert('操作は成功しました');
} else if(msg == "4"){
alert('カテゴリ サブクラスがあるため削除できません');
}else (msg == "0"){
alert('不明なエラー!'+'nエラー コード:'+msg);
列の変更と追加に使用される changtype.php もあります
/***************************************
$reback の説明:
0. 不明なエラー
1. 重複クラス名
2、操作失敗
3. 操作成功
4. 分類には 2 つのレベルがあります
**************************** *********/
$conn=mysql_connect("localhost","root",""); mysql_select_db(" db_database22",$conn);
mysql_query("set names utf8");
$action = $_GET['action'];// JavaScript ファイル内のアクションを取得します
$reback = '';//戻り変数を作成します
if ($action == 'm'){// アクションの値が m?? 列名を変更します
$names = $_GET['names'];
$key = $_GET[' key'];
$sql = "select * from tb_class where name = '$names'";
$rst = $conn->execute($sql);//select データベースを実行
if($rst-> RecordCount() == 1){ //選択が成功した場合
$reback = '1';//戻り値は 1 です
}else{
$updatesql = "select * from tb_class where id = ".$key ;
$updaterst = $conn->execute ($updatesql);
$upd["id"] = $key;
$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 = "id = ".$key から削除します。 ($conn->execute ($delsql) == false){
$reback = '2';
}else{
$reback = '3';
}
}
}else{
$reback = '0 ';
}
echo $ reback;
?>
これは基本的に、smarty テンプレート エンジンを使用するように変更したかったのですが、それを直接変更する必要があることがわかりました。うまくいきませんでした。ここでいくつか質問があります:
1. document.getElementById(fi) .value が値を取得できず、変更ボタンをクリックしても応答がありません。入力非表示フィールドに onbur を追加すると、「電子カテゴリ」のデータ テーブル ID が 1 つだけ表示されます。これは、他のフィールドの変更キーをクリックするたびに表示されます。この列は表示されません。その入力の非表示スタイルを非表示に変更すると、すべての列に対応する ID が表示されます。これは、PHP ページが ID を取得したことを意味します。各列の値ですが、JavaScript ページは入力隠しフィールドの値を取得できません。それは の値です。
2. 最初の PHP ファイルでは、親クラスを変更した後、onclick="javascript:modifytype({$key}) であることがわかります。これは何を意味しますか? {$key} はスマート テンプレート変数ですこれはどのように変更すればよいでしょうか?
3. changtype.js の関数 check() が機能しないのはなぜですか?
AJAX+JSON を使用すると非常に便利です。これは直接サポートされています
jquery を使用して値を取得し、それぞれを使用してクエリを実行できます。問題は、特定のボタンをクリックするたびに、プロンプト ボックスが自動的にポップアップし、さまざまな値が表示されることです。ループ。当初は、自動的にプロンプトを表示するのではなく、項目の横にあるキーを押して、対応する値をポップアップさせたかったのですが、その方法がわかりません。 ("input:hidden").each(function(){ alert($(this).val())