PHP
RT、同じページが複数回更新されます。正常な場合もあれば、半分しか表示されない場合もあれば、完全に空白の場合もありますcommon.php<?phppublic static function readTabFile($fileName) { if (!file_exists($fileName)) { die("<b>404 File not found!</b>"); } $handle = fopen($fileName, 'rb'); $contents = fread($handle, filesize ($fileName)); //iconv("UTF-8","GBK", $contents); if(ord($contents) == 0xEF) { $contents = substr($contents, 4); } $rows = explode("\r\n", $contents); fclose($handle); $ret; $colNames = null; for($i = 0; $i < count($rows); $i++) { $row = $rows[$i]; if(!empty($row) && $row != "" && substr($row, 0, 1) != "#") { $col = explode("\t", $row); if(empty($colNames) || $colNames == null) $colNames = $col; else { $item; $itemId = (int)$col[0]; if(empty($itemId)) { die("..."); } for($j = 0; $j < count($col); $j++) { $value = $col[$j]; $item[$colNames[$j]] = $value; } $ret[$itemId] = $item; } } } return $ret; }?>test.php<?php $dir = "../goods.tab"; $table = Common::readTabFile($dir);?><script> var goodsTb = new Array(); <?php foreach($table as $key => $value) { echo "goodsTb[".$value["id"]."]=\"".iconv("GBK","UTF-8", $value["sz_name"])."\";"; } ?> function checkNum(i) { var sle_obj = document.getElementById('valueType' + i); var index = sle_obj.selectedIndex; var valueType = sle_obj.options[index].value; var num_obj = document.getElementById('count' + i); if(valueType == -1) { alert('请选择道具类型!'); } if(num_obj.value > 500) num_obj.value = 500; } var i = 1; function addFile() { var dv = document.getElementById("dvFiles"); var selectObj = document.createElement("select"); selectObj.name = "valueType"; selectObj.id = "valueType" + i; var sg = document.createTextNode("选择道具 "); dv.appendChild(sg); //创建select选项卡 var myOption = document.createElement("option"); myOption.setAttribute("value","-1"); myOption.appendChild(document.createTextNode("无")); selectObj.appendChild(myOption); for (var key in goodsTb) { var op = document.createElement("option"); op.setAttribute("value", key); op.appendChild(document.createTextNode(goodsTb[key])); selectObj.appendChild(op); } dv.appendChild(selectObj);....
お願いします |! !
オンラインで待っています、うおおおおおお
大事にしてください
コードが正常であれば正常であると考えられる場合もあります
完全に空白とはどういう意味ですか?ページ全体に一言も書かれていませんか?
これのほとんどはネットワークの問題であり、プログラムのアルゴリズムが複雑すぎてブラウザのタイムアウト範囲内に応答がない場合を除き、コードとは何の関係もありません
単語はなく、ただ空白です。 。 。
アルゴリズムも複雑ではありません。 。 。たった 2 つの 1000 ループです。コードも投稿しました。 。 。
ただし、ネットワークに関連している必要があり、ローカル デバッグは正常です。 。 。
空白の理由は、js内にループがあり、jsの実行が途中で止まっているためです。 。 。解決策を探しています
空白の理由は、js内にループがあり、jsの実行が途中で止まっているためです。 。 。解決策を探しています
それは js のパフォーマンスの問題である可能性があります
たとえば、smarty テンプレートを使用し、配列を表示テンプレートに渡し、HTML を返すようにすることを強くお勧めします。ループで取得するか、フロントエンドに出力します
jsループは使用しないでください
空白になっているのは、js内にループがあり、jsの実行が途中で止まっているためです。 。 。解決策を探しています
それは js のパフォーマンスの問題である可能性があります
たとえば、smarty テンプレートを使用し、配列を表示テンプレートに渡し、HTML を返すようにすることを強くお勧めします。ループで取得するか、フロントエンドに出力する
js ループを使用しないでください
js についてはよくわかりませんが、ff ページの実行ソース コードから判断すると、前のコードがphpで取り出した配列は正しいのですが、jsを出力すると止まってしまいます。
Smarty テンプレートについて学んだことがありません。js に関する解決策はありますか?
空白の理由は、js内にループがあり、jsの実行が途中で止まっているためです。 。 。解決策を探しています
それは js のパフォーマンスの問題である可能性があります
たとえば、smarty テンプレートを使用し、配列を表示テンプレートに渡し、HTML を返すようにすることを強くお勧めします。ループで取得するか、フロントエンドに出力する
js ループを使用しないでください
js についてはよくわかりませんが、ff ページの実行ソース コードから判断すると、前のコードがphpで取り出した配列は正しいのですが、jsを出力すると止まってしまいます。
Smarty テンプレートについて学んだことがありません。JS に解決策はありますか?
JS には解決策と最適化方法が必要だと思います
しかし、ここでは言及できません
ループを実行するために PHP を使用することしか提案できません。
Smarty を理解していない場合でも、問題はありません。php で直接ループし、echo を使用して HTML を記述するだけです
なぜ js を使用してループし結合する必要があるのですか
echo $str; foreach($table as $key => $value) { echo 'var op = document.createElement(\"option\");'; echo 'op.setAttribute(\"value\", "'.$value["id"].'");'; echo 'op.appendChild(document.createTextNode("'.iconv("GBK","UTF-8", $value["sz_name"]).'"));'; echo 'selectObj.appendChild(op)'; } ?>
php を使用するHTMLを出力することはまだ機能しません。 。 。 。 。 。 。 。 。 。 。
PHP を使用して HTML を直接出力することはできませんか...
ページをざっと見たところ、バックグラウンドからデータを取得するための ajax があり、クエリと選択を送信することは完全に可能です。 js コードでなければなりませんか?
最初のもの ドロップダウン ボックスは PHP から直接出力された HTML ですが、追加ボタンがあり、クリックするたびに新しいドロップダウン ボックスが生成されます。 。 。 。現在の追加ボタンはJSで実装されています
追加をクリックすると、propsとitemを選択するドロップダウンボックスが表示されますね
違いがなければ直下にhtmlを挿入してください。前のドロップダウン リストが配置されている div は以上です
最初のドロップダウン ボックスのクラスが abc であり、ドロップダウン ボックスと次の入力ボックスが同じ div の下にあるとします
$(" .abc").parent().after($(".abc") .parent().html());
jquery は一文で実装されています
なんと言いますか? 業務内容が詳しくなるほど、理解できないのでこれ以上は言えません
実際、私が最終的に言いたいのは、それは完全に不要であるということです 複雑な JS ループを使用すると、ページが完全に表示されなくなります 実現するには多くの方法があります。これ
$(".abc").after($(".abc").html ()); 聞いてください、割り当てられたコンテンツの ID と名前を後で変更できますか?
そうですね、jquery を使用するのは非常に簡単です - -
$(" について質問します。 abc").after($(".abc").html()); 後続の割り当ての ID と名前を変更できますか?
もちろん変更できます。これは別の質問です
それはあなた次第です 構造この選択リストの内容と js ファイルの記述方法
たとえば、val="id1234" などの各項目のカスタム属性を定義します
次に、項目を選択するときに、js を使用して選択内容を取得します。この val中央のテキスト説明
は、後続の入力の値に保存されます (jquery セレクターを使用すると非常に便利です)
これは比較的単純な js アプリケーションです
$(".abc").after($(".abc").html()); で割り当てられた ID と名前を変更できるかどうか聞いてもいいですか
もちろん、これは別の質問です
それは、選択リストの構造と js ファイルの記述方法によって異なります
たとえば、各項目にカスタム属性を定義する場合は、次のようにします。 id1234"
次に、項目を選択するときに、js を使用して val と選択範囲の中央のテキスト説明を取得し、それを後続の入力の値に保存します (jquery セレクターを使用すると非常に便利です)
これは、js の比較的単純なアプリケーションです
jquery を使用したことがありません。いくつかの構文を理解するためにドキュメントを参照するだけです。 。 。
私が投稿した最初の写真は、商品を選択した後、数量を入力する必要があるというもので、選択の後にテキストが続きました。
[追加] をクリックした後、$(".abc").after($(". abc").html( )) このメソッドではselectとtextのidが元のものと同じになってしまいます。区別したいです。例えば変数iを使って制御し、iごとに1を加算します。追加した。 。
さらに、追加したい項目の後に削除ボタンを押すと、この項目を削除できます。参考としてコード例を教えてください。ありがとうございます - -
好吧,用jquery真的很简单- -
请问 $(".abc").after($(".abc").html()); 可以修改后面赋值内容的id跟name么
当然可以 这是另一个问题
看你的这个select列表的结构和你js文件的写法了
比如你给每一项定义一个自定义属性比如说叫val="id1234"
然后当你选择某一项时 用js获取选择项的这个val和中间的text描述
然后存入后边的input的value中 (用jquery选择器会很方便)
这是js比较简单的应用了.
jquery没有用过,只是参考文档能了解些语法。。。
我最早贴的图,就是我选择了物品后,需要填写数量,就是一个select跟一个text,
点击添加后,$(".abc").after($(".abc").html())这种方法,会导致select,text的id跟原来的一样,我想区分开来,比如用个变量i控制,每添加一个i就加1.。。
另外我想添加的项后面可以跟个删除按钮,点击删除可以删除本项,麻烦给个代码示例参考下,谢谢- -
抱歉才到家.
写了个简单的demo,只有增加和删除DIV的 选择后写入值的可以去网上搜下相关文章
<!doctype html><html lang="cn"><head> <meta charset="UTF-8"> <title>Document</title> <meta name="Keywords" content="" /> <meta name="Description" content="" /> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js" type="text/javascript"></script> <script type="text/javascript"> function addDiv(){ var lastHtml = $(".abc:last").clone(); var item_id = $(".abc:last select").attr("id"); var input_id = $(".abc:last input").attr("id"); var new_item_id = "item_" + (parseInt(item_id.substr(5))+1); var new_input_id = "item_num_" + (parseInt(input_id.substr(9))+1); lastHtml.children("select").attr("name",new_item_id); lastHtml.children("select").attr("id",new_item_id); lastHtml.children("input").attr("name",new_input_id); lastHtml.children("input").attr("id",new_input_id); $(".abc:last").after("<div class='abc'>"+lastHtml.html()+"</div>"); } function delDiv(obj){ var i = $(".abc").length; if (i>1) { $(obj).parent(".abc").remove(); }else{ alert("至少选择一项"); } } </script></head><body> <div><!--以后换成form--> <div class="abc"> <select name="item_1" id="item_1" > <option value="0">无</option> <option value="1">剑气火灵幻影</option> <option value="2">神武至尊怒火</option> <option value="3">鬼舞玄冰法杖</option> </select> 数量 <input type="text" name="item_num_1" id="item_num_1" value="" /> <a href="javascript:void(0)" onclick="delDiv(this)">删除</a> </div> <button onClick = "addDiv()">添加</button> </div></body></html>
好吧,用jquery真的很简单- -
请问 $(".abc").after($(".abc").html()); 可以修改后面赋值内容的id跟name么
当然可以 这是另一个问题
看你的这个select列表的结构和你js文件的写法了
比如你给每一项定义一个自定义属性比如说叫val="id1234"
然后当你选择某一项时 用js获取选择项的这个val和中间的text描述
然后存入后边的input的value中 (用jquery选择器会很方便)
这是js比较简单的应用了.
jquery没有用过,只是参考文档能了解些语法。。。
我最早贴的图,就是我选择了物品后,需要填写数量,就是一个select跟一个text,
点击添加后,$(".abc").after($(".abc").html())这种方法,会导致select,text的id跟原来的一样,我想区分开来,比如用个变量i控制,每添加一个i就加1.。。
另外我想添加的项后面可以跟个删除按钮,点击删除可以删除本项,麻烦给个代码示例参考下,谢谢- -
抱歉才到家.
写了个简单的demo,只有增加和删除DIV的 选择后写入值的可以去网上搜下相关文章
<!doctype html><html lang="cn"><head> <meta charset="UTF-8"> <title>Document</title> <meta name="Keywords" content="" /> <meta name="Description" content="" /> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js" type="text/javascript"></script> <script type="text/javascript"> function addDiv(){ var lastHtml = $(".abc:last").clone(); var item_id = $(".abc:last select").attr("id"); var input_id = $(".abc:last input").attr("id"); var new_item_id = "item_" + (parseInt(item_id.substr(5))+1); var new_input_id = "item_num_" + (parseInt(input_id.substr(9))+1); lastHtml.children("select").attr("name",new_item_id); lastHtml.children("select").attr("id",new_item_id); lastHtml.children("input").attr("name",new_input_id); lastHtml.children("input").attr("id",new_input_id); $(".abc:last").after("<div class='abc'>"+lastHtml.html()+"</div>"); } function delDiv(obj){ var i = $(".abc").length; if (i>1) { $(obj).parent(".abc").remove(); }else{ alert("至少选择一项"); } } </script></head><body> <div><!--以后换成form--> <div class="abc"> <select name="item_1" id="item_1" > <option value="0">无</option> <option value="1">剑气火灵幻影</option> <option value="2">神武至尊怒火</option> <option value="3">鬼舞玄冰法杖</option> </select> 数量 <input type="text" name="item_num_1" id="item_num_1" value="" /> <a href="javascript:void(0)" onclick="delDiv(this)">删除</a> </div> <button onClick = "addDiv()">添加</button> </div></body></html>
都是新手 多交流
给你个小思路 看能帮到你不!
test.php<?php $dir = "../goods.tab"; $table = Common::readTabFile($dir); foreach($table as $key => $value) { echo "<option value='{$value["id"]}'>".iconv("GBK","UTF-8", $value["sz_name"])."</option>"; }?>test.html //加载jquery<select id="tools" name="tools[]"></select><a href="javascript:addTools();"></a><script>function autoTools(){ var i=$("#tools").length-1;$.get("test.php",function(data){$("#tools:eq("+i+")").html(data);});}function addTools(){ $("#tools").after("<select id='tools' name='tools[]'></select>").autoTools();}autoTools();</script>
好吧,用jquery真的很简单- -
请问 $(".abc").after($(".abc").html()); 可以修改后面赋值内容的id跟name么
当然可以 这是另一个问题
看你的这个select列表的结构和你js文件的写法了
比如你给每一项定义一个自定义属性比如说叫val="id1234"
然后当你选择某一项时 用js获取选择项的这个val和中间的text描述
然后存入后边的input的value中 (用jquery选择器会很方便)
这是js比较简单的应用了.
jquery没有用过,只是参考文档能了解些语法。。。
我最早贴的图,就是我选择了物品后,需要填写数量,就是一个select跟一个text,
点击添加后,$(".abc").after($(".abc").html())这种方法,会导致select,text的id跟原来的一样,我想区分开来,比如用个变量i控制,每添加一个i就加1.。。
另外我想添加的项后面可以跟个删除按钮,点击删除可以删除本项,麻烦给个代码示例参考下,谢谢- -
抱歉才到家.
写了个简单的demo,只有增加和删除DIV的 选择后写入值的可以去网上搜下相关文章
<!doctype html><html lang="cn"><head> <meta charset="UTF-8"> <title>Document</title> <meta name="Keywords" content="" /> <meta name="Description" content="" /> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js" type="text/javascript"></script> <script type="text/javascript"> function addDiv(){ var lastHtml = $(".abc:last").clone(); var item_id = $(".abc:last select").attr("id"); var input_id = $(".abc:last input").attr("id"); var new_item_id = "item_" + (parseInt(item_id.substr(5))+1); var new_input_id = "item_num_" + (parseInt(input_id.substr(9))+1); lastHtml.children("select").attr("name",new_item_id); lastHtml.children("select").attr("id",new_item_id); lastHtml.children("input").attr("name",new_input_id); lastHtml.children("input").attr("id",new_input_id); $(".abc:last").after("<div class='abc'>"+lastHtml.html()+"</div>"); } function delDiv(obj){ var i = $(".abc").length; if (i>1) { $(obj).parent(".abc").remove(); }else{ alert("至少选择一项"); } } </script></head><body> <div><!--以后换成form--> <div class="abc"> <select name="item_1" id="item_1" > <option value="0">无</option> <option value="1">剑气火灵幻影</option> <option value="2">神武至尊怒火</option> <option value="3">鬼舞玄冰法杖</option> </select> 数量 <input type="text" name="item_num_1" id="item_num_1" value="" /> <a href="javascript:void(0)" onclick="delDiv(this)">删除</a> </div> <button onClick = "addDiv()">添加</button> </div></body></html>
ページをざっと見たところ、バックグラウンドからデータを取得するために ajax があり、クエリと選択を送信することは完全に可能です。行は js コードでなければなりませんか?
まず、ドロップダウン ボックスは php によって直接出力された html ですが、追加ボタンがあり、クリックするたびに新しいドロップダウン ボックスが生成されます。 。 。 。現在の追加ボタンはJSで実装されています
追加をクリックすると、propsとitemを選択するドロップダウンボックスが表示されますね
違いがなければ直下にhtmlを挿入してください。前のドロップダウン リストが配置されている div は以上です
最初のドロップダウン ボックスのクラスが abc であり、ドロップダウン ボックスと次の入力ボックスが同じ div の下にあると仮定します
$(" .abc").parent().after($(".abc") .parent().html());
jquery は一文で実装されています
なんと言いますか? 業務内容が詳しくなるほど、理解できないので、ここではこれ以上は言えません
実際、私が最終的に言いたいのは、それはまったく不要であるということです 複雑な JS ループを使用すると、ページが不完全に表示されます これを実現するには、さまざまな方法があります。 。 。