2018年11月25日日曜日

Web:javascript が勝手に動くとき

 サイトで DataTables 使って表を作り、行をクリックして選択、ボタンを押してその行に対する処理を行う処理を実装していた。FireFox の開発ツールを使ってステップ実行をしながらデバッグしていたのだが、ボタンの onClick で飛んできた直後にブレークポイントを入れたのだが、止まったと同時にすべての行が選択されてしまう現象が起きた。

最初はコードがおかしいのかと思ったのだが、どうも開発ツールを使っていないと現象が起きないっぽい。よくよく調べると[監視式]にすべての行が選択される式が書かれていた ><

datatable.rows().select() <- こんな感じ

使い方がよくわからなくていろいろ試していたのだが、こんなことが起きるとは...


2018年11月12日月曜日

Web:JS:一つしかないラジオボタンの状態を拾う方法

ラジオボタンが複数ある場合(フツーの状態)

<form id="target">
 <input name="hoge" type="radio" value="a"> A
 <input name="hoge" type="radio" value="b"> B
 <input name="hoge" type="radio" value="c"> C
</form>

// form要素を取得
var element = document.getElementById( "target" ) ;

// form要素内のラジオボタングループ(name="hoge")を取得
var radioNodeList = element.hoge ;

// 選択状態の値(value)を取得 (Bが選択状態なら"b"が返る)
var a = radioNodeList.value ;

if ( a === "" ) {
 // 未選択状態
} else {
 // aには選択状態の値が代入されている
 console.log( a ) ;
}
(こちらのサイトのコードをお借りした)

しかし、ラジオボタンが一つしかないとき、この方法は使えない。クリックされていない状態でも value が返ってくる(複数あって一つも選択されていないときは value が "" となる)。

ラジオボタンの数が可変で一つのこともある場合は、一つの場合だけ処理を分け、value ではなく、checked (選択されていると true) で拾うのが吉。

上記ソースだと、ラジオボタンが一個の場合は

// 選択状態の値(true)を取得
// value は最初から input 要素の value 属性が設定されている
var a = radioNodeList.checked ;

if ( a === false ) {
 // 未選択状態
} else {
 // 選択状態
}



2018年11月3日土曜日

Linux:Samba:Ubuntu18.04:とりあえず動く smb.conf 設定

何度やっても samba は嵌る ><

smb.conf を壊してどうにもならなくなった時
 -> apt remvoe しても返ってこない。/usr/share/samba/smb.conf にオリジナルがある。

とりあえず以下の設定で共有ホルダーが使えるようになる
 ->[global] に以下を追加
unix charset = UTF-8
dos charset = CP932
unix extensions = no
wide links = yes
120行目付近にある以下のコメントを外して有効に
map to guest = bad user

元ネタはこちらこちら

共有じゃないホルダーへのアクセスは、いまだできず ><