htmlの要素の変化を検知する
脱jQuery中.
個人的な事情で必要になったので,簡単に調べた.
やりたいこと
javascriptによって,htmlのdomの構造が書き換えられたとき,それを検知したい.
結論
MutationObserverというものがあるので,これを使う.
(new MutationObserver(()=>{ console.log("detected!"); })) .observe(document.documentElement, { childList: true, attributes: true, subtree: true });
document.documentElement
の子要素に変化があったとき,{ console.log("detected!"); }
を実行する.
documentElementとは,documentのルート要素.
上のコードを実行した後,コンソールに下のコードを打ち込んでみると,detected!
と表示されるはず.
document.documentElement.append(document.createElement("span"));続きを読む
標準入力からスペース区切りで値を拾うEnumerableな何か
競技プログラミングで与えられる入力は半角スペース・改行の両方で区切られることが多い.
そこで,半角スペース・改行で区切って値を拾ってくるEnumerableなクラスを書いた.
class In include Enumerable def initialize(io) @io = io @buff = [] self end def shift return @buff.shift unless @buff.empty? return nil unless l = @io.take(1).first return (@buff = l.chomp.split).shift end def line b = @buff; @buff = []; b end def each r = shift while r yield r r = shift end end end Cin = In.new(STDIN) @n,@m = Cin.take(2) @w = Cin.take(@n.to_i) @e = @m.to_i.times.map{Cin.take(2)} instance_variables.each do |v| puts "#{v} => " p instance_variable_get v end
動いている. IOクラスのwrapperっぽい実装になっているのは,なんとなく.