Hiromi1623
@Hiromi1623

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

JavaScriptが上手く起動しません。

解決したいこと

大学の課題でJavaScriptを学び始め、プログラムを作成したのですが、エラーが出てしまいどこが間違っているのかがわかりません。
何方か教えていただけないでしょうか?

Sublime text3で作成しました。

発生している問題・エラー

行:1
文字:5
エラー:';'がありません。
コード:800A03EC
ソース:Microsoft JScript コンパイルエラー

または、問題・エラーが起きている画像をここにドラッグアンドドロップ

該当するソースコード

let strURL=window.location.href;
	console.log('strURL = ', strURL);
	console.log('typeof(strURL) = ', typeof(strURL));

let str_ex_05 = 'ex_05'; 
	console.log('str_ex_05 = ', str_ex_05);
	console.log('typeof(str_ex_05) = ', typeof(str_ex_05));

let len_str_ex_05 = str_ex_05.length();
	console.log('len_str_ex_05 = ', len_str_ex_05);
	console.log('typeof(len_str_ex_05) = ', typeof(len_str_ex_05));

let ex_Posi = strURL.index0f (str_ex_05); 
	console.log('ex_Posi = ', ex_Posi);
	console.log('typeof(ex_Posi) = ', typeof(ex_Posi));

let cut_str_ex = strURL.slice(0,0+5);
	console.log('cut_str_ex = ', cut_str_ex );
	console.log('typeof(cut_str_ex) = ', typeof(cut_str_ex) );

window.document.write("<p>JavaScriptで追記します<p>"); 

let strMessage = "<h3>今回の課題番号は" +ex_05 + "です </h3>";

window.document.write(ex_05); 

let check_num = 20000;
window.document.write( '完全数を計算します<br>');
window.document.write( '<p>完全数とは、自分を除く約数の和が自分にに等しい整数です</p>');
window.document.write( '<p>完全数は未だに51個しか見つかっていません! </p>');
window.document.write( "<p>" + String(4) + "までの完全数を計算します</p>");
let sum = 0; 
let i, j, k;
for( i=1; i<=check_num; i++ ){
	sum = 0;
	for( j=1; j<i; j++ ){
		if( i%j === 0 ){
		sum = sum + j;
	}
} 
if( i === sum ){ 
		window.document.write( '完全数 : ' + String(i) + '<br>' );
	}
}

自分で試したこと

プログラムを一から入力しなおしました。

0

1Answer

Stringのlengthは関数ではなく、プロパティです。(正確には「stringインスタンスの読み取り専用データプロパティ」)
以下で動くと思います。

- let len_str_ex_05 = str_ex_05.length();
+ let len_str_ex_05 = str_ex_05.length;

また、indexOfindex0f になっています。(「オー」であるところが「ゼロ)

- let ex_Posi = strURL.index0f (str_ex_05);
+ let ex_Posi = strURL.indexOf(str_ex_05);

次にex_05が未定義となります。
正解は私はわかりませんが以下のようにすれば一旦動きます

+ let ex_05= str_ex_05; 
let strMessage = "<h3>今回の課題番号は" +ex_05 + "です </h3>";
1Like

Comments

  1. @Hiromi1623

    Questioner

    返信ありがとうございます。
    ex_05はjsファイルの名前になります。
  2. ブラウザで上から順に実行していけばどこが問題なのかはわかるはずなので、全部を一度に見ようとせずに少しずつコードを実行していくことをおすすめします。
  3. @Hiromi1623

    Questioner

    それは1~3行目という風に順々に実行していくという感じで大丈夫でしょうか?
  4. そうです。
    `JScript`の利用が指定されていないのであれば、ブラウザ等での実行のほうが正確かと思います。
    課題は`JScript`の利用が必要なのでしょうか?
    `JScript`を指定されているのであれば、おそらく文字コードの設定が必要なので、以下を参考にすすめてみてください。
    https://teratail.com/questions/199101
  5. @Hiromi1623

    Questioner

    プログラムを修正してteratailの方に記載されている方法で実行してみましたが、同様のエラーが出てしまいました…。
    PCの方に問題があるのでしょうか。
  6. JScript前提ならconsole.logではなくWScript.Echoとかですね。window.locationとかも使ってますし。
    ブラウザ実行前提のはずなのでファイルダブルクリックで実行するのではなく、ブラウザでF12や右クリックして検証からconsoleタブで実行してみてください。
  7. @Hiromi1623

    Questioner

    実行してみたら
    「uncought TypeError: strURL.indexof is not a function at ex_05.js:13:22」と出ました。
    indexofが機能していないのでしょうか?
  8. `indexOf`の「O」は大文字です。
  9. @Hiromi1623

    Questioner

    失礼いたしました…。
    大文字にしたところ無事に出力できました!
    懇切丁寧に説明してくださってありがとうございます。
  10. お疲れ様でした!
    JScriptあたりで私も遠回りな回答をしてしまい、申し訳ありませんでした。
    今後ともプログラミングの勉強がんばってください。

Your answer might help someone💌