わんすけに聞いてみる EXCELっぽいHTMLテーブル,jquery,サンプルコード 編集したTableの値に循環参照が発生していないかチェックしてみる。

編集したTableの値に循環参照が発生していないかチェックしてみる。

さて、今回は編集可能にしたTableに関数を実装していく前に循環参照を検出しようというところ。

編集中のセルからフォーカスアウトした時に発火するイベントにチェックを仕込みます。

循環参照のチェックを開始する部分

行 7-13のif分のところですね。

Excelと同じように使いたいから、最初の文字が”=”(イコール)でかつセルアドレスに合致するパターンの文字列が入っていたら循環参照のチェックをしたい。

んで、循環参照だとわかったら事前によっこしておいたロールバック値にセルの値を戻してフォーカスを強制的にテキスト編集エリアに戻してしまう訳だ。

editable_table.LoopCheckの実装部分

まずは、渡された編集元のセルのアドレスを控えつつ、ここからは再起的に同じセルアドレスへの参照が含まれていないか検索し続ける訳だ。

editable_table.RootExistsの実装部分

渡された配列にセルの値に含まれてるセルアドレスを追加しながら、その新たなセルの値にも同じ検索を繰り返していって、すでに追加済みのセルアドレスが検出されてしまったら循環参照とみなしてfalseを返すようにすると。

これを事前にやっておかないと、関数的にセルの書式を処理し始めたらループしちゃう可能性がありそうですからね。

 

まだ関数の実装については細かく考えてないんだけども。

で、裏の機能は実装したけども、いざ表を編集しようとしてみるとExcelと違って行と列にインデックスがないからなんて指定したらセル参照になるのかわかりませんね(@_@;)

 

次は、編集モードの時だけ各セルのセルアドレスがフワッと出現する様にしてみますかね。

わんすけへ寄付金を送る

このサイトの情報が役に立ったなーって思う方がいらっしゃれば、

是非「わんすけに缶コーヒー1本でもご馳走する」気持ちでポチってあげて下さい😉

¥120

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

Related Post