読者です 読者をやめる 読者になる 読者になる

hogashi.*

日記から何から。

JavascriptのinnerHTML覚書き

プログラミング HTML Javascript

 調べれば出ているのだろうけど書いておく。

/* NGソースここから */

function ch_pass(){
  var pass1 = document.getElementById(‘new_pass’).value;
  var pass2 = document.getElementById('new_pass2’).value;
  var error = document.getElementById('pass_error’).innerHTML;
  if*1{
    error = “;
    return true;
  }else{
    error = ’<span>新しいパスワードが空か、一致しません。</span>’;
    return false;
  }
}

/* NGソースここまで */

 あるid(ここではpass_error)のinnerHTMLを代入した変数errorに文字を代入しても、その元のidのinnerHTMLには代入されない。

/* OKソースここから */

function ch_pass(){
 var pass1 = document.getElementById('new_pass’).value;
 var pass2 = document.getElementById('new_pass2’).value;
 var error = document.getElementById('pass_error’);
 if*2{
   error.innerHTML = ”;
   return true;
 }else{
   error.innerHTML = ’<span>新しいパスワードが空か、一致しません。</span>’;
   return false;
 }
}

/* OKソースここまで */

 まぁ確かによく考えればわかりそうなもんなんだけど微妙。C言語的な解釈からいくとポインタを使わずに関数を経て変数を使っているイメージなのかな。元のアドレスを参照していないから、その変数の場所には代入されるけど、元に代入できないとか。

 でもここでちょっと疑問なのは、

①じゃあdocument.getElementById()は、元のアドレスを参照できる何かを戻り値に持つのか?

②変数やinnerHTMLに対してC言語での「&a」のようにアドレスを求めること(Perlで言うデリファレンス?)ができないか?

の2点。どうなんだろう。

*1:pass1 != “) && (pass2 != ”) && (pass1 == pass2

*2:pass1 != ”) && (pass2 != “) && (pass1 == pass2