[Javascript]textareaの伸縮が上手くいきません。

サンプルコードを寄せ集め改造を始めて4日目のド素人です。 
YouTubeのAPI検索のプレビュー一覧から目当ての動画の
自サイト用にマークアップした埋め込みコードを切り取れる仕組みを作っています。
コードの入ったtextareaをフォーカスの有無で伸縮させたいのですが作動しません。
大まかな構造は以下。
 
$.getJSON(url, { alt:'json' }, function(json) {
 for () {
  //動画データ抽出(省略)
  var ip = "動画ID";
  var str ="";
  str+=/*埋め込みコード(プレビュー用)*/<textarea id="ip" onFocus=\"SetSize("+ip+",200);\" onBlur=\"SetSize("+ip+",18);\" style=\"width: 218p; height: 18px;\" onclick=\"this.select();\">/*埋め込みコード(コピペ用)*/</textarea>
  $('div#YTlist').append(str);
 }
});
function SetSize(_id,_height) {
var elm = document.getElementById(_id);
elm.style = 'width: 218p; height: _height;';
}

実際のJSファイルは goo.gl/eWSnR
設置ページは goo.gl/o9jOK です。
大きな勘違いや些細なミスなどあると思いますがよろしくお願いします。

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2012/02/15 23:36:52
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:a-kuma3 No.1

回答回数4973ベストアンサー獲得回数2154

ポイント200pt

サイズ変更のエッセンスだけを取り出したものを書いてみました。
http://jsfiddle.net/UBUuQ/

質問にあるコードをざっと見て、まずそうなところ。

  • width の単位が px じゃなくて、p になってる
  • SetSize に渡している _height が style に代入されてない
    シングルクォートの中に _height と書いても、渡した数字が埋め込まれるわけじゃありません
  • 高さの単位が無い

とりあえず、SetSize をこんな感じにすると、うごくような気がします。

function SetSize(_id,_height) {
    var elm = document.getElementById(_id);
    elm.style.height = _height + 'px';        /* ★ここ! */
}
id:animeguide

ありがとうございます。
書いて頂いたコードに修正したところ希望通りに動いてくれました。

setsize(this, 18)のthisの書き方なども
thisがよく理解できなかったので、こう使うのかと感激です。
素早く的確な回答、本当にありがとうございました。

2012/02/15 23:36:12
  • id:animeguide
    文字数制限でだいぶはしょりましたが
    繰り返しのforでAPIから30個動画埋め込みコードが生成されるため
    textareaのidを動画IDとしfunction SetSizeの関数でtextareaをid指定し伸縮を試みました。

    pxが抜けていた部分は質問後に気づき修正しました。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません