FF および IE_javascript スキルと互換性のある自作の動的テーブルの例
HTML テーブルの構造は次のとおりです:
< ;table id=" Dy_table" width="760" cellpadding="0" style="border-top: Solid 1px #9cf"
class="tableStyle1" cellpacing="0">
< th style="width:60px">アクション
readonly='true' />title='製品コード' />name='Dy_hd_rowState' type='hidden' value='1' title='行のステータス' /> type='hidden' value='0' title='パーツ仕様' />
次のように:
function addEvent (o,c,h){
if(o.attachEvent){
o.attachEvent('on' c,h);
o.addEventListener(c,h,false);
}
return true;
}
var selectRow;//選択された行を保存するために使用される、pop-
function addnode(){
var table=document.getElementById("Dy_table");
var tr=table.rows[1].cloneNode(true); でこの行に値を割り当てます。
for (var i=1;i
tr.childNodes[i]。 getElementsByTagName("input" )[p].value="1";
else
tr.childNodes[i].getElementsByTagName("input")[p].value=""; 🎜>}
var rowCount = table.rows[0].cells[0].getElementsByTagName("input")[1].value;//ユーザーに表示される行数
tr.firstChild。 innerHTML=parseInt(rowCount) 1;
table.rows[0].cells[0].getElementsByTagName("input")[1].value = parseInt(rowCount) 1;// 表示される行の数 1
table.rows[0].cells [0].getElementsByTagName("input")[0].value = table.rows.length;//非表示を含む合計行数
var tbody=table.getElementsByTagName( "tbody");
if( tbody!=null){
tbody[0].appendChild(tr);
table.appendChild(tr); >//削除時のイベント
function delnode(){
var table=document.getElementById("Dy_table");
var rowCount = table.rows[0].cells[0].getElementsByTagName(" input")[1].value; //ユーザーに表示される行の数
var row; //最後に表示される行を取得します
for( var i=table.rows.length-1; i> =0 ;i--){
if(table.rows[i].style.display!="none")
{
row=table.rows[i];
break;
}
}
var rowId=row.cells[1].getElementsByTagName("input")[2].value;
if( rowCount > 1 ){
if(rowId) =="")//新しい行 データベースに書き込まれない場合は直接削除
{
var tbody=table.getElementsByTagName("tbody"){
if(tbody!=null); >tbody[0].removeChild(row) ;
}else
table.removeChild(row);
table.rows[0].cells[0].getElementsByTagName("input")[1] .value = parseInt(rowCount) - 1;
}
else//データベースから削除する必要がある場合は、削除マークを設定します
{
row.style.display="none" ;
row.cells[1].getElementsByTagName(" input")[3].value = "2";
table.rows[0].cells[0].getElementsByTagName("input")[1] ].value = parseInt(rowCount)-1;
}
}else{
if(rowId == ""){//新しい行がデータベースに書き込まれない場合、
をクリアしますrow.cells[1].getElementsByTagName("input")[0 ].value="";
row.cells[1].getElementsByTagName("input")[1].value=""; row.cells[1].getElementsByTagName("input")[2 ].value="";
row.cells[1].getElementsByTagName("input")[3].value=""; row.cells[1].getElementsByTagName("input")[4 ].value="";
row.cells[2].getElementsByTagName("input")[0].value=""; row.cells[3].getElementsByTagName("input")[0 ].value="1";
row.cells[4].getElementsByTagName("input")[0].value=""; >row.cells[5].getElementsByTagName("input")[ 0].value=""
row.cells[6].getElementsByTagName("input")[0].value=""; >row.cells[7].getElementsByTagName("input")[ 0].value=""
row.cells[8].getElementsByTagName("input")[0].value=""; >}else{// データベースから削除する必要がある場合は、削除します。 Tag
row.style.display="none";
row.cells[1].getElementsByTagName("input")[3] ].value = "2";
table.rows[0].getElementsByTagName("input")[1].value = parseInt(rowCount) - 1; 🎜>}
}
setClf();
}
//
function delnode1(o){
var tr=o.parentNode.parentNode; のイベントvar table=document.getElementById("Dy_table");
var rowCount = table.rows[0].cells[0].getElementsByTagName("input")[1].value;// に表示される行の数ユーザー
var rowId=tr.cells[1].getElementsByTagName("input" )[2].value;
if( rowCount > 1 ){
if(rowId=="")/ /新しく追加された行がデータベースに書き込まれていない場合は、直接削除します
{
var tbody=table.getElementsByTagName("tbody");
if(tbody!=null){
tbody [0].removeChild(tr);
}else
table.removeChild(tr) ;
table.rows[0].cells[0].getElementsByTagName("input")[1].value = parseInt(rowCount) - 1;
}
else
{
tr.style.display="none";
tr.cells[1].getElementsByTagName("input")[ 3].value = "2";
table.rows[0].cells[0] .getElementsByTagName("input")[1].value = parseInt(rowCount) - 1; }else{
if(rowId==""){//新しい行がデータベースに書き込まれていない場合は、直接クリアします
tr.cells[1].getElementsByTagName("input")[0]。 value= "";
tr.cells[1].getElementsByTagName("input")[1].value="";
tr.cells[1].getElementsByTagName("input")[2]。 value= "";
tr.cells[1].getElementsByTagName("input")[3].value="";
tr.cells[1].getElementsByTagName("input")[4]。 value= "";
tr.cells[2].getElementsByTagName("input")[0].value="";
tr.cells[3].getElementsByTagName("input")[0]。値 = "1";
tr.cells[4].getElementsByTagName("input")[0].value="";
tr.cells[5].getElementsByTagName("input")[0] .value ="";
tr.cells[6].getElementsByTagName("input")[0].value="";
tr.cells[7].getElementsByTagName("input")[0] .value ="";
tr.cells[8].getElementsByTagName("input")[0].value="";
}else{// データベースから削除する必要がある場合は、削除マーク
tr.style.display="none";
tr.cells[1].getElementsByTagName("input")[3].value = "2"; ].cells[0] .getElementsByTagName("input")[1].value = parseInt(rowCount) - 1;
}
}
// 次のループは行番号
for( var i= 1,p = 1; i if(table.rows[i]. style.display!="none")
{
table.rows[i].cells[0].innerHTML = p;
}
}
setClf( );
}
/ / 変更時に発生するイベント、行ステータスの変更
function textChange(o){
var tr=o.parentElement.parentElement;
if(o.parentElement. parentElement.parentElement==null)return;/ /新しく追加された行の場合は return
var rowState = tr.cells[1].getElementsByTagName("input")[3].value;
if( rowState == "1")
return ;
else
tr.cells[1].getElementsByTagName("input")[3].value = "3"; 🎜>}
//送信データの前に重複行がないことを確認します。
function checkSameData(){
var table=document.getElementById("Dy_table");
for( var i= 1; i if(table.rows[i].style.display == "none"||table.rows[i].cells[1].getElementsByTagName( "input")[1].value==" ") continue;
for( var p= i 1; p < table.rows.length ;p ){
if(table.rows[p] .style.display == "none") 続行;
if(table.rows[i].cells[1].getElementsByTagName("input")[1].value.replace(/s $/g," ") ==
table.rows[p ].cells[1].getElementsByTagName("input")[1].value.replace(/s $/g,""))
{alert("部品セクションに重複した項目があるため、保存できません。 ");return false;}
}
}
return true;
}
var DialogWin;//パーツウィンドウが開いているかどうか
//パーツを選択
関数selectLj( o){
if(dialogWin == null){
selectRow = o.parentNode.parentNode;//行をグローバル変数に割り当てます
var cpxh = selectRow.cells[1].getElementsByTagName ("input ")[0].value;
dialogWin = winOpen('selectLj.aspx?ljh=' cpxh); // window.open("../jddgl/Select_lj.aspx?ljh= " cpxh, window,
// "center:yes;dialogWidth:600px;dialogHeight:400px;help:no;status:no;");
}
}
function winOpen(url) {
return window.open(url,'selectLj','resizable=1,status=0,menubar=0,scrollbars=1,height=400px,width=600px');
}
/ /テーブル内のコストを計算します
function setClf(){}
これは、以前に作成した
テーブルを動的に追加する
を改良したものです。これは、私が JS を学んだ直後の失敗作です。互換性の過程で、標準の DOM 仕様を見逃すことなく、JS DOM を使用する際の多くの知識が向上しました。 MS DHTML マニュアルを読むときに注意してください。そこに記載されているメソッドと属性は標準のものを使用するのが最善です。
この動的テーブルは、テーブルの長さに従って動的に増減できます。 HTML 内で設定されている td の数を気にする必要はありません。このテーブルには、2 番目の td に追加される動的追加と削除が含まれています。データセットと同様に行ステータスを使用して、サーバー側でデータの更新、削除、追加を行うことができます。 ポップアップ ウィンドウを使用するだけでは、FF および IE7 では機能しません。 iframe でどのように動作するのかわかりません。
IE では、クローンされた tr を使用して td コレクションを取得することはできません。次のことが可能です。 tr に入力があり、onpropertychange イベントが使用されているため、tr に新しく追加された入力値が削除されたときにもイベントがトリガーされるため、この状況を排除するためにこのイベントで if が使用されます。ブラウザの互換性は本当に少し面倒です。 FF ではまだ問題があり、ページが送信されない場合、FF がページをリロードするとサーバー側コントロールの値が保存されますが、IE では実際にリロードされ、ページ上の値はすべて保存されます。保存されません。サーバー コントロール値を保存する FF の動作は、その asp.net サポートに問題があるはずです。これは、ページを送信しないと発生しません。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











JavaScript文字列置換法とFAQの詳細な説明 この記事では、javaScriptの文字列文字を置き換える2つの方法について説明します:内部JavaScriptコードとWebページの内部HTML。 JavaScriptコード内の文字列を交換します 最も直接的な方法は、置換()メソッドを使用することです。 str = str.replace( "find"、 "置換"); この方法は、最初の一致のみを置き換えます。すべての一致を置き換えるには、正規表現を使用して、グローバルフラグGを追加します。 str = str.replace(/fi

楽なWebページレイアウトのためにjQueryを活用する:8本質的なプラグイン jQueryは、Webページのレイアウトを大幅に簡素化します。 この記事では、プロセスを合理化する8つの強力なjQueryプラグイン、特に手動のウェブサイトの作成に役立ちます

それで、あなたはここで、Ajaxと呼ばれるこのことについてすべてを学ぶ準備ができています。しかし、それは正確には何ですか? Ajaxという用語は、動的でインタラクティブなWebコンテンツを作成するために使用されるテクノロジーのゆるいグループ化を指します。 Ajaxという用語は、もともとJesse Jによって造られました

10の楽しいjQueryゲームプラグインして、あなたのウェブサイトをより魅力的にし、ユーザーの粘着性を高めます! Flashは依然としてカジュアルなWebゲームを開発するのに最適なソフトウェアですが、jQueryは驚くべき効果を生み出すこともできます。また、純粋なアクションフラッシュゲームに匹敵するものではありませんが、場合によってはブラウザで予期せぬ楽しみもできます。 jquery tic toeゲーム ゲームプログラミングの「Hello World」には、JQueryバージョンがあります。 ソースコード jQueryクレイジーワードコンポジションゲーム これは空白のゲームであり、単語の文脈を知らないために奇妙な結果を生み出すことができます。 ソースコード jquery鉱山の掃引ゲーム

記事では、JavaScriptライブラリの作成、公開、および維持について説明し、計画、開発、テスト、ドキュメント、およびプロモーション戦略に焦点を当てています。

このチュートリアルでは、Ajaxを介してロードされた動的なページボックスの作成を示しており、フルページのリロードなしでインスタントリフレッシュを可能にします。 JQueryとJavaScriptを活用します。カスタムのFacebookスタイルのコンテンツボックスローダーと考えてください。 重要な概念: ajaxとjquery

このJavaScriptライブラリは、Cookieに依存せずにセッションデータを管理するためにWindow.nameプロパティを活用します。 ブラウザ全体でセッション変数を保存および取得するための堅牢なソリューションを提供します。 ライブラリは、セッションの3つのコア方法を提供します

このチュートリアルでは、jQueryを使用して魅惑的な視差の背景効果を作成する方法を示しています。 見事な視覚的な深さを作成するレイヤー画像を備えたヘッダーバナーを構築します。 更新されたプラグインは、jQuery 1.6.4以降で動作します。 ダウンロードしてください
