質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.31%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

2回答

675閲覧

ネットで見つけたJavascriptのコードの意味がわかりません

1520

総合スコア0

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

1グッド

2クリップ

投稿2025/04/23 05:43

ネットで見つけたJavascriptのコードの一部の意味がわからないので教えていただきたいです。

私は現在、ネットで見つけたJavascriptのコードのわからないところを一つひとつ調べて勉強しています。
そして、そんな中でいくらネットで調べてもわからないところがあったので教えていただきたいのです。

こちらのコードをネットで見つけてわからないところを一つひとつ調べました。
var upSpeed=15; //メッセージのスライド速度
var delay =3000; // 次のメッセージに切り替わるまでの静止時間
var tickerH=40; // 表示ボックスの高さ
window.onload =function divScroller(){
scroller = document.getElementById("ticKer"); // div 表示ボックス
scroller.style.height= tickerH+"px"; // 表示ボックスの高さ
scroller.style.lineHeight= tickerH+"px"; // 行の高さ
slide = document.getElementById("ulArea"); // スライドさせる ul要素
slide.style.position = "absolute"; // 絶対配置
slide.style.top = tickerH+"px" ; // slide のtop(上辺)の位置
innScroll(tickerH, upSpeed, delay)
}
function innScroll(tickerH, upSpeed, delay){
msec = upSpeed; // スクロール時間
numTop = parseInt(slide.style.top) // 数値文字列を整数に変換
if (numTop > -tickerH){ // top位置が -30にならない間は
slide.style.top = (numTop-1)+"px"; // top位置を -1px 上へ
}
else{ slide.style.top = 0+"px";
cngLi(); // 次のメッセージと交代
}
if(numTop==0){msec = delay;// 静止時間 現在のメッセージを待機
}
setTimeout("innScroll("+ tickerH +","+ upSpeed +"," + delay +")", msec);
}
function cngLi(){ // メッセージの移動
base= document.getElementById("ulArea");
liList = base.getElementsByTagName("li");// 与えられたタグ名を持つ要素のリスト
elm = liList[0];// 最上部の "li"要素
base.appendChild(elm); // elm を子ノードとして末尾に移動する。
}

そして、こちらのコードの

divScroller

tickerH+"px"

innScroll(tickerH, upSpeed, delay)

msec

cngLi

setTimeout("innScroll("+ tickerH +","+ upSpeed +"," + delay +")", msec)

の部分がいくら調べてもわからないので教えてください。

ikurasan👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

meg_

2025/04/23 12:58 編集

コードが読みにくいのでマークダウンで記入してください。書き方はヘルプを参照ください。 また引用元も書かれた方が良いかと思います。コードを無断で転載されるのは気分の良いものではないと思います。
1520

2025/04/24 13:31

わかりました。 [アニメーション特集-4]Javascriptアニメーション基本・作り方まとめの使えそうなサンプル集の下からスライドインするニュースティッカーのjavascriptのコードです。
guest

回答2

0

「わからない」では意味があいまいではありますが、

※ 追記
質問の内容とか、他の方へのコメントを見ると、JavaScriptの基本的な文法やプログラムの構成についての知識/理解が足りていないように思います。 それらの知識が無いとコードを読んでもそういう前提部分で理解できないと思います。
まずは、入門書などを一冊読破するなどしてみてはいかがでしょうか。

divScroller

定義している関数の名前。

tickerH+"px"

tickerHには数値40が入っていますが、+演算子で文字列と結合しようとすると文字列になるので、結果として 「40px」という文字列になる。

innScroll(tickerH, upSpeed, delay)

下で定義しているinnScroll関数を呼び出している。

msec

単なる変数名。 たぶんミリ秒を保持するのでこの名前。

cngLi

下で定義されているcngLi関数。

setTimeout("innScroll("+ tickerH +","+ upSpeed +"," + delay +")", msec)

setTimeoutメソッドの呼び出し
https://developer.mozilla.org/ja/docs/Web/API/Window/setTimeout

こんなところでしょうか。
何がわからないのか書いていただけると、もう少し説明できます。

投稿2025/04/23 06:11

編集2025/04/23 06:21
TakaiY

総合スコア14286

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

1520

2025/04/23 07:51

ありがとうございます。 わからないというのはコードの意味のことです。 そして、innscroll関数やcngLi関数とはなんでしょう?。
TakaiY

2025/04/23 09:59

> innscroll関数やcngLi関数とはなんでしょう? 15行目あたりの function innScroll(tickerH, upSpeed, delay) ではじまる部分が、innScroll関数を定義(宣言)しているところです。 31行目あたりの function cngLi() ではじまる部分が、cngLi関数を定義(宣言)しているところです。 「関数とは何か」とか、使いかたとか、仕組みとかがわからないということであれば、それらはJavaScriptの基礎にあたる概念ですから、回答に追記したように入門書などで確認するのがいいと思います。
guest

0

setTimeout("innScroll("+ tickerH +","+ upSpeed +"," + delay +")", msec)

setTimeoutは遅延して実行する仕組みです
仕組み自体がものすごく古いため引数に文字列でユーザー関数を指定することができます
内容としてはmsecミリ秒後にinnScrollを実行引数がそれぞれtickerH,upSpeed,delayということ
ただし何をやりたいのかは検証していません

参考

挙動はこういうことでしょうね、1行メッセージを縦にスライドさせながらローテーションさせるということです

html

1 2<script> 3var upSpeed=15; 4var delay =3000; 5var tickerH=40; 6window.onload =function divScroller(){ 7 scroller = document.getElementById("ticKer"); 8 scroller.style.height= tickerH+"px"; 9 scroller.style.lineHeight= tickerH+"px"; 10 slide = document.getElementById("ulArea"); 11 slide.style.position = "absolute"; 12 slide.style.top = tickerH+"px" ; 13 innScroll(tickerH, upSpeed, delay); 14} 15function innScroll(tickerH, upSpeed, delay){ 16 msec = upSpeed; 17 numTop = parseInt(slide.style.top); 18 if (numTop > -tickerH){ 19 slide.style.top = (numTop-1)+"px"; 20 } 21 else{ slide.style.top = 0+"px"; 22 cngLi(); 23 } 24 if(numTop==0){msec = delay; 25 } 26 setTimeout("innScroll("+ tickerH +","+ upSpeed +"," + delay +")", msec); 27} 28function cngLi(){ 29 base= document.getElementById("ulArea"); 30 liList = base.getElementsByTagName("li"); 31 elm = liList[0]; 32 base.appendChild(elm); 33} 34</script> 35<style> 36#ticKer{ 37background-Color:lightgray; 38overflow:hidden; 39position:relative; 40} 41#ulArea{ 42list-style:none; 43} 44</style> 45<div id="ticKer"> 46<ul id="ulArea"> 47<li>1</li> 48<li>2</li> 49<li>3</li> 50</ul> 51</div>

リファクタリング

今回の挙動をエミュレートするとこんな感じがよいかと

html

1<script> 2const delay =1000; 3window.addEventListener('DOMContentLoaded', ()=>{ 4 document.querySelector('#ulArea').classList.add('anime'); 5}); 6document.addEventListener('animationend',e=>{ 7 const t=e.target; 8 t.appendChild(t.querySelector('li')); 9 t.classList.remove('anime'); 10 setTimeout(()=>t.classList.add('anime'), delay ); 11}); 12</script> 13<style> 14#ticKer{ 15background-Color:lightgray; 16overflow:hidden; 17position:relative; 18height:40px; 19} 20#ulArea{ 21list-style:none; 22position:absolute; 23} 24#ulArea.anime{ 25animation:slideup 1s; 26} 27#ulArea li{ 28height:40px; 29} 30@keyframes slideup{ 31 from{top:0} 32 to{top:-40} 33} 34</style> 35<div id="ticKer"> 36<ul id="ulArea"> 37<li>1</li> 38<li>2</li> 39<li>3</li> 40</ul> 41</div>

投稿2025/04/23 05:49

編集2025/04/23 08:14
yambejp

総合スコア117667

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

1520

2025/04/23 06:09

ありがとうございます。 innScrollとはなんでしょう?。いくら調べてもわかりませんでした。 tickerHとupSpeedもいくら調べてもわかりませんでした。 そして、こちらのコードは下からスライドインするニュースティッカーを作るコードです。
maisumakun

2025/04/23 06:42 編集

> innScrollとはなんでしょう?。いくら調べてもわかりませんでした。 すぐ上にあるfunction innScrollです。 (コード内で作った関数は、JavaScriptの場合は通常「名前そのもの」が意味を持つことはありません。あくまで、関数を識別するためのものですので、名前自体の意味を見出す作業は不毛です)
1520

2025/04/23 07:55

わかりました。 しかし、 setTimeout("innScroll("+ tickerH +","+ upSpeed +"," + delay +")", msec) の全体的な意味を詳しく教えていただきたいです。
yambejp

2025/04/23 08:17

>setTimeout("innScroll("+ tickerH +","+ upSpeed +"," + delay +")", msec) これはこう書き換えられます setTimeout(()=>innScroll(tickerH,upSpeed,delay), msec) function innScrollの中身はコメントがついているとおりだと思います。1行ごとに内容を確認すればそんなに難しいことは書いてありません
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.31%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問