元スレ+ JavaScript の質問用スレッド vol.105 +
JavaScript覧 / PC版 /みんなの評価 :
501 = :
IE8もまだ属性とプロパティと混同してて手抜き実装なんだけど
503 = :
質問させてください。
とある事情から、JavaScriptのデータ(配列やらオブジェクトやら)を、
「文字列として」出力する必要がでてきました。
つまり、
var data = {id:1, text:'Hello'};
var array = [1, "Hi"];
// data = ごにょごにょ...
// array = ごにょごにょ...
console.log(data); // => {id:1, text:'Hello'} と出力
console.log(array); // => [1, "Hi"] と出力
としたいのですが、可能でしょうか?
ちなみに、
var data = "{id:1, text:'Hello'}";
とするのはもちろんナシでお願いします。
505 = :
>>503
JSON.stringify()
http://es5.github.com/#x15.12.3
506 = :
>>503
JSON.stringify
507 = :
>>501-503
こんな便利なものが! ありがとうございます!
あと、たびたびすみません。類似の問題なのですが、
console.log(function(){var foo = 'boo';});
とした場合、Chromeではコンソールに
function(){var foo = 'boo';}
と表示されるのですが、
$('#input').val(function(){var foo = 'boo';}); // inputタグに出力
とした場合は、inputタグの値として表示させることができません。
(空文字? なのか、変化がありません)
こちらは何か方法はありませんでしょうか?
508 = :
>>507
Function#toString()
509 = :
文字列で渡せばok
510 = :
>>507
console.log は渡された引数を内部で toString などをして表示しているけど、
$('...').val() は引数に文字列型しか取らないので、
自分で toString なり JSON.stringify なりして文字列にすればいい
511 = :
>>507
$('#input')[0].value = function(){var foo = 'boo';};
512 = :
>>510
ごめん、いろいろ間違ってた
・JSON.stringify は Function オブジェクトについては使えない
・$('...').val() は関数も引数に取れる(けど使い方が違う)
.val() | jQuery API Documentation
api.jquery.com/val/
513 = :
>>505
>>508
ありがとうございます。どちらの方法でもできました!
とくに >>508 の方の方法は不思議ですね。なぜ[0].valueだと表示できるのか不思議でなりません^^;
>>509
ありがとうございます。なんだか、function( index, value ) と、シグニチャが限定されているっぽいですね。
とにかく、皆様本当にありがとうございました。
514 = :
>>513
> とくに >>508 の方の方法は不思議ですね。なぜ[0].valueだと表示できるのか不思議でなりません^^;
String 型にキャストされる仕様だから。
http://www2u.biglobe.ne.jp/~oz-07ams/prog/dom-ref/HTML/HTMLInputElement.html#HTMLInputElement-value
jQuery で引数のデータ型によって処理を変更する方法は、標準仕様と大分違うから惑わされないほうがいい。
515 = :
>>513
> どちらの方法でもできました!
>>512も指摘してるが、function に JSON.stringify は適用できない。
それを許す実装はあるが、仕様上は不可だから修正されれば使えなくなる。
516 = :
>>511
>>512
アドバイスありがとうございます。
とても勉強になりました。
518 = :
友人が
「これからはCoffeeScriptだ」
見たいなこといっててサーバサイドのスクリプトとかいじってるけどさぁ……。
世の中の多くはレガシーシステムだってことわかってんのかね。
そいつのCoffeeScriptとやらより、俺のJavaScriptの方が100倍は表現力・オブジェクト指向性たかいわ。
言語が先進的だからそれ使ってる自分も先進的。
んなことほざくガキとは絶対一緒に仕事したくねぇな。
「JavaScriptって汚くねぇか?」
とか言っちゃってさ。
その自分はCoffeeScriptでグローバル変数アホみたいに使ってて。
はぁ、もう勝手にやってろって感じ。
521 = :
そりゃそうだけどvarで変数宣言しないなんてことがあるわけないもの
522 = :
>>521みたいな奴がいるわけがない、と思ったら居た。
523 = :
>>522みたいな奴がいるわけがない、と思ったら居た。
524 = :
>>523みたいな奴がいるわけがない、と思ったら居た。
525 = :
ところで、varで変数宣言しないなんてことあるの?
526 = :
そんな奴おれへんやろ~。
527 = :
全部仮引数にしちゃいなyo!
528 = :
試験問題
次のうちクリックされたときに呼ばれるのはどれか
理由も述べなさい
var onclick = function(){alert('hoge')}
onclick = function(){alert('piyo')}
function onclick(){alert('fuga')}
529 = :
>>528
イベントハンドラ未定義なのでどれも呼ばれません
530 = :
>>529
そこは脳内変換で
532 = :
これonclick = function(){alert('piyo')}だけなら動くんだな
onclickを新しく作っちまうとダメか
でも新しくつくったonclickもwindow.onclickなんだね?
window.onclickを作り変えるとダメ?どゆこと?
535 = :
なんか、勉強になった。
536 = :
【環境】mac OS10.5.8 firefox16
【html ソース】
<html><div id="test">〜〜〜〜〜</div></html>
【Javascript】
var count = 1;
$(function() { $("#test").hover(function(){
count = 0;
console.log('reset:' + count);
setTimeout(countUp,3000,count);
});
function countUp(num) { num++;
console.log('count up:' + num);
setTimeout(countUp,3000,num);
}
というのをつくりました。基本的に何もしなければ3秒毎にcountの値を増やしていき、ログに出力、
divにマウスが乗ったらcountの値を0にリセットして出力、その後0からカウントアップ再開したいと考えました。
2→3→0(リセット)→1→2→・・・
という挙動を期待しているのですが、
2→3→0(リセット)→4→5→・・・
となってしまいます。関数countUpに変数countの値が渡らず、別系統でカウントアップがされているようなのですが、
何がどう間違ってるのか見当がつきません。
jQueryを使っているものの、中でやってることはjQuery的ではないので、こちらで質問しました。
スレチならすみませんが、宜しくお願いします。
537 = :
それだと hover(function(){... が呼び出される度に
setTimeout の連鎖が追加されていく(clearTimeout してない)ので
2→3→4→5→・・・
と
0(リセット)→1→2→3→・・・
が同時並行的に出力される筈だが?
ちなみにそのコードだと
setInterval 使う方が管理は楽だろう
539 = :
>>536
俺ならこうする
http://jsfiddle.net/mHpdL/4/
540 = :
それだと動作があんま綺麗じゃないね。
541 = :
ありがとうございます。
取り急ぎclearTimeoutを入れ、関数に引数を渡さないようにすると意図どおりの動きになりました。
どうも引数の扱いも誤解してたみたいです。
setIntervalについてはこれから調べてみたいと思います。
543 = :
カードゲームを作りたいのですがデータを記述する方法がわかりません
どうすればデータを作る事ができますか?
myData = new Array(41);
for (i=0; i<41; i++) myData[i] = i+1;
for (i=0; i<500; i++){
myA = Math.floor( Math.random() * 41 )
myB = Math.floor( Math.random() * 41 )
myBackup = myData[myA];
myData[myA] = myData[myB];
myData[myB] = myBackup;
}
myCard = new Array(5);
for (i=0; i<5; i++) myCard[i] = myData[i];
for(i=0; i<5; i++){
document.write("[",myCard[i],"]");
if (i < 4) document.write("-");}
これでランダムの数値を持ってきても、それをカードのデータに変換する方法が見つかりません
どうすればカードのデータに変換できますか?
544 = :
マルチ
545 = :
546 = :
ちょっとした小技知りたいんですが
var hoge =[];
if(hoge['a']{'b'}=='unko')ほにゃらら
ってやるとhoge['a']は生成されてないからバグが発生しちゃいますが
皆さんこういう対処はどうやってますか?
i
f(hoge['a']){
if(hoge['a']['b']=='unko')ほにゃらら
}
というのは何か汚いように見えるんですが
547 = :
まっとうな方法
if (hoge['a'] && hoge['a']['b'] == 'huga') {}
少しトリッキー
var hage;
if ((hage = hoge['a']) && hage['b'] == 'hufa') {}
類似してるかもしれないスレッド
- + JavaScript の質問用スレッド vol.100 + (1001) - [97%] - 2012/6/13 22:46
- + JavaScript の質問用スレッド vol.101 + (1001) - [97%] - 2012/7/16 14:15
- + JavaScript の質問用スレッド vol.102 + (1001) - [97%] - 2012/9/11 17:30
- + JavaScript の質問用スレッド vol.103 + (1001) - [97%] - 2012/11/9 15:30
- + JavaScript の質問用スレッド vol.104 + (1001) - [97%] - 2013/1/28 4:00
- + JavaScript の質問用スレッド vol.106 + (1001) - [97%] - 2013/7/20 9:30
- + JavaScript の質問用スレッド vol.107 + (1001) - [97%] - 2013/9/7 10:16
- + JavaScript の質問用スレッド vol.108 + (1001) - [97%] - 2013/9/21 15:16
- + JavaScript の質問用スレッド vol.109 + (1001) - [97%] - 2013/10/7 13:16
- + JavaScript の質問用スレッド vol.135 + (1002) - [97%] - 2018/11/23 10:30
- + JavaScript の質問用スレッド vol.125 + (1001) - [97%] - 2015/10/7 17:45
- + JavaScript の質問用スレッド vol.115 + (1001) - [97%] - 2014/5/29 16:16
- + JavaScript の質問用スレッド vol.141 + (881) - [95%] - 2021/4/19 9:00
- + JavaScript の質問用スレッド vol.122 + (116) - [95%] - 2018/5/2 18:30
- + JavaScript の質問用スレッド vol.121 + (1001) - [95%] - 2015/1/1 18:30
- + JavaScript の質問用スレッド vol.122 + (1004) - [95%] - 2015/2/14 4:45
- + JavaScript の質問用スレッド vol.126 + (348) - [95%] - 2023/1/12 17:00
トップメニューへ / →のくす牧場書庫について