人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

以下のソースで、最後のalert(HOGEHOGE.timer_interval)で
表示する数値を、startファンクション内の
freqの引数で渡された値にしたいのですが、
alertの表示はずっと、10000のままになってます。
もちろんstartファンクション内では
きちんと値は代入されています。
どうしたらいいんのでしょうか?
var HOGEHOGE ={
timer_interval:10000,
start:function start(freq){
if(freq > 0) {
HOGEHOGE.timer_interval = freq
}else{
HOGEHOGE.timer_interval = freq
}
}
alert(HOGEHOGE.timer_interval)

●質問者: hopefully
●カテゴリ:就職・転職 ウェブ制作
✍キーワード:ソース ファンクション 引数
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● じゃっくそにっく
●60ポイント

こんにちは。

修正コード

<script type="text/javascript">
var HOGEHOGE ={
timer_interval:10000,

start:function start(freq){
if(freq > 0) {
HOGEHOGE.timer_interval = freq;
}else{
HOGEHOGE.timer_interval = 0;
}
}
}
// テスト用コード
// startを呼び出す
HOGEHOGE.start(10);

// timer_intervalをアラート
alert(HOGEHOGE.timer_interval)
</script>

これでいいかと思います

?"}"の閉じ忘れがありました。

?if(freq > 0)の処理わけで、

どっちに分岐しても同じになってしまっていたので、

マイナスのfreqが入ったら0にするよう修正しておきました。

///////////////////////////////////////////////////////////////////

もっとわかりやすい方法

今回のコードように、

「オブジェクト内のメンバ関数によって、

オブジェクト内のメンバ変数を変更する。」

という構造を持つものを使う場合、

JavaScriptのfunctionを応用した、

擬似クラスを使ったほうがよいです。

やり方

function クラス名()
{
// メンバ変数の定義
this.メンバ変数名 = 初期値;

// メンバ変数の値を変更するメンバ関数の定義
this.メンバ関数名j = function (パラメータ値)
{

this.メンバ変数名 = パラメータ値;
}
// 必ずこれが必要
return (this);
}

のようにクラスを定義し、

var インスタンス名 = クラス名();

という風にオブジェクトを生成します。

もちろん、コンストラクタに引数を持たせて、

独自の初期化をさせることも可能です。

そちらを使った今回のソース

<script type="text/javascript">
/////////////////////////////////////////////////
//
//クラス CHogeHoge
//
function CHogeHoge (){
// メンバ変数
// this.に設定
this.timer_interval=1000;
// メンバ関数
// this.に設定
this.start = function ( freq )
{
if( freq >0) {
// メンバ変数の変更
this.timer_interval = freq;
} else {
// メンバ変数の変更
this.timer_interval = 0;
}
}
// 生成された自身を帰す
return (this);
}
// CHogeHogeクラスのインスタンスを作成
var HOGEHOGE = CHogeHoge();
// テスト用コード
// startを呼び出す
HOGEHOGE.start(10);

// timer_intervalをアラート
alert(HOGEHOGE.timer_interval)

</script>
◎質問者からの返答

ありがとうございますw

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ