大学の授業でJavascriptを扱っています。
が、熟練者ではなく、全くの初心者です。
初級者向けの授業なのに、なぜJavaを扱うのだ?と思っているほどです。
先生がスクリーンに映し出したプログラムを同じように打ち込んで写すというやり方なのですが、同じプログラムを書いたはずなのに、正しく表示されません。
Javaに詳しい方がおられましたら、僕の書いたものを以下に載せますので、間違っている箇所を指摘していただけたらと思います。
課題1 計算をendを入力するまでし続けるプログラムらしいのですが。
<html>
<body bgcolor=pink>
<center>
<h1>
<script type="text/javascript">
//typeの部分をlanguage="javascript"と書いてもよい。
s=0;
while(true){
m=prompt("数値を入力(終りは文字列endを入力)。","")};
if(m=="end"){
break;
}else{
n = parseFloat(m);
s=s+n;
document.write("n"="+n+"<br>");
};
};
document.write("合計"(s)="+s);
</script>
</h1>
</center>
</body>
</html>
課題2
<html>
<body>
<script language="javascript">
for(x=3;x<=10;x++){
document.write("<img src="aki10.jpg" width="+x+"% height="+x+"% hspace=2>");
};
for(x=9;x>=3;x--){
document.write("<img src="aki10.jpg " width="+x+"% height="+x+"% height="+x+"% hspace=2>");
};
</script>
</body>
</html>
課題3
チェックボックスをクリックすると、写真が変わるような仕組みになっています。
<html>
<head>
<script language="javascript">
function flip(){
if(document.f.check.checked){
document.image.src="aki10.jpg";
}else{
document.image.src="aki01.jpg";
};
};
</script>
</head>
<body bgcolor=gray>
<center>
<img src="aki10.jpg" name="image" width=400 height=300>
<form name="f">
<input type="checkbox" name="check" onClip="flip()">
</form>
</center>
</body>
</html>
ちなみに、jpgは間違ってません。
そういう名前の写真があるのだと思ってください。
詳しい方、1つでも結構ですので、よろしくお願いします。
No.2ベストアンサー
- 回答日時:
何の注釈もなく,
>//typeの部分をlanguage="javascript"と書いてもよい。
こんなことを言い出すのは信頼できないなあ。教える気がないのかも。
一応最小限の修正で動くところまで持って言ってみたけれど
==================
<html>
<body bgcolor=pink>
<center>
<h1>
<script type="text/javascript">
s=0;
while(true){
m=prompt("数値を入力(終りは文字列endを入力)。","");
if(m=="end"){
break;
}else{
n = parseFloat(m);
s=s+n;
document.write("n="+n+"<br>");
}
}
document.write("合計(s)="+s);
</script>
</h1>
</center>
</body>
</html>
=================
<html>
<body>
<script language="javascript">
for(x=3;x<=10;x++){
document.write("<img src=\"aki10.jpg\" width=\""+x+"%\" height=\""+x+"%\" hspace=\"2\">");
}
for(x=9;x>=3;x--){
document.write("<img src=\"aki10.jpg\" width=\""+x+"%\" height=\""+x+"%\" hspace=\"2\">");
}
</script>
</body>
</html>
======================
<html>
<head>
<script language="javascript">
function flip(){
if(document.f.check.checked){
image.src="aki10.jpg";
}else{
image.src="aki01.jpg";
}
}
</script>
</head>
<body bgcolor=gray>
<center>
<img src="aki10.jpg" name="image" width="400" height="300">
<form name="f">
<input type="checkbox" name="check" onchange="flip();">
</form>
</center>
</body>
</html>
これはまだ最小限の修正であって,HTMLやEcmascriptとしては間違っている。(最も多かった修正は#1さんのに加え
if(true){
}else{
} // ←セミコロンいらない
//とか
while(true){
} //←セミコロンいらない
//ところで,Ecmascriptって何!?って思ったら
//「仕様」と「実装」とは何か調べてみるといいよ。
)
●IEを無視
●application/xhtml+xmlというContent-Typeを配布できる
(Windows前提でHDD内のファイルを読み込む形なら拡張子をxhtml
にするだけでも行けるかも)
という条件がそろっているなら
<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dt …
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Q3558434 TestCase 1</title>
<style type="text/css">
body{
background-color:pink;
}
</style>
<script type="text/javascript">
function body_onload(){
//DOMを経由することで,エスケープし忘れを事前に防ぐ
//Firefoxだといきなりスクリプト実行時,getElementByIdでコけるので
//body要素のonload属性からの発動にした。
var s = 0;
var n = 0;
var m = "";
var i;
var inputs = document.getElementById("userinputs");
var sum = document.getElementById("sum");
while(inputs.childNodes.length > 0){
inputs.removeChild(inputs.childNodes[0]);
}
while(sum.childNodes.length > 0){
sum.removeChild(sum.childNodes[0]);
}
while(true){
m = window.prompt("数値を入力(終りは文字列endを入力)。","");
if(m=="end"){
break;
}else if(parseFloat(m)){
n = parseFloat(m);
s=s+n;
var li = document.createElementNS("http://www.w3.org/1999/xhtml","li");
li.appendChild(document.createTextNode(n.toString()));
inputs.appendChild(li);
}
else{
//掲示のソースとの違い:
window.alert("入力するなら数字か予約語endにしてくださいよ。")
}
}
sum.appendChild(document.createTextNode(s.toString()));
}
</script>
</head>
<body onload="body_onload();">
<h1>Q3558434 TestCase 1</h1>
<h2>ユーザーが入力したもの</h2>
<ul id="userinputs">
<li>ユーザーが入力したものはありません。Ecmascriptが無効なのであろうと思います。</li>
</ul>
<h2>入力したものの合計(入力してなければ0)</h2>
<p id="sum">ユーザーは何も入力していません。</p>
</body>
</html>
=====================
<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dt …
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Q3558434 TestCase 1</title>
<style type="text/css">
object{
margin-left:2px;
margin-right:2px;
border-style:solid;
border-color:red;
}
</style>
<script type="text/javascript">
function body_onload(){
var pictures = document.getElementById("pictures");
while(pictures.childNodes.length > 0){
pictures.removeChild(pictures.childNodes[0]);
}
for(x=3;x <= 10;x++){
var object = document.createElementNS("http://www.w3.org/1999/xhtml","object");
object.setAttribute("data","aki10.jpg");
object.setAttribute("type","image/jpeg");
object.setAttribute("width",x.toString() + "%");
object.setAttribute("height",x.toString() + "%");
object.appendChild(document.createTextNode("[" + "aki10.jpg - " + "width:"+x.toString() + "%" + "," + "height:"+x.toString() + "%" +"]" ))
pictures.appendChild(object);
}
for(x=9;x >= 3;x--){
var object = document.createElementNS("http://www.w3.org/1999/xhtml","object");
object.setAttribute("data","aki10.jpg");
object.setAttribute("type","image/jpeg");
object.setAttribute("width",x.toString() + "%");
object.setAttribute("height",x.toString() + "%");
object.appendChild(document.createTextNode("[" + "aki10.jpg - " + "width:"+x.toString() + "%" + "," + "height:"+x.toString() + "%" + "]" ))
pictures.appendChild(object);
}
}
</script>
</head>
<body onload="body_onload();">
<h1>Q3558434 TestCase 2</h1>
<p id="pictures">
Ecmascriptが無効です。本来ならアクセシビリティを考慮すべきところですが,
課題なので省略します。(というか適切な方法が思いつかないだけですが)
</p>
</body>
</html>
===================================
<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dt …
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Q355843 TestCase 3</title>
<script type="text/javascript">
function flip(){
var object = document.getElementById("image");
if (document.getElementById("check").checked){
object.setAttribute("data","aki01.jpg");
object.textContent = "aki01.jpg"
}else{
object.setAttribute("data","aki10.jpg");
object.textContent = "aki10.jpg"
}
};
</script>
</head>
<body>
<h1>Q355843 TestCase 3</h1>
<h2>画像</h2>
//どこかに送るためにaction属性を書かないならformを使わない。
<p><object id="image" type="image/jpg" data="aki10.jpg" width="400" height="300">aki10.jpg</object></p>
<p><input type="checkbox" id="check" onchange="flip()" /><label for="check">aki10.jpgをaki01.jpgの代わりに使う</label></p>
</body>
</html>
===========
という感じの記法を勧める。
No.1
- 回答日時:
流し読みしただけでも分かるような、基本的におかしい部分は文字列の扱い方です。
document.write("n"="+n+"<br>");
document.write("<img src="aki10.jpg" width="+x+"% height="+x+"% hspace=2>");
ダブルクォーテーションの中でダブルクォーテーションを直接使用することできません。これではどこからどこまでが文字データなのか分からないからです。
document.write("n=" + n + "<br>");
↑何が文字列で何が変数なのかを明確にする。
document.write('<img src="aki10.jpg" width="' + x + '%" height="' + x + '%" hspace=2>');
↑ダブルクォーテーションを使用する際は文字列宣言の囲み文字にシングルを使う。(または\"を使用する。)
それと、イベントハンドラが変ですね
<input type="checkbox" name="check" onClip="flip()">
↓
<input type="checkbox" name="check" onClick="flip()">
パッと見てみつかったエラー部分はここらへんでしょうか。
それと”Java”と”JavaScript”はまったくの別物です。同じ単語が使われているだけであって”本”と”本棚”ぐらいものが違います。同一のものと絶対に考えないでください。
あと、この勉強をする上で必須の<--! //-->おまじないがないことが気になりますね。学校で意図的に教えていない?のかも知れませんが、常にいれるクセをつけましょう。
<script type="text/javascript">
<!--
[ソースコード]
//-->
</script>
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript 画像の表示位置 3 2022/12/23 08:25
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- PHP PHPのエラーの解消法について教えて下さい。 1 2023/02/06 10:48
- PHP 入力した部分を表示させたまま(保持)するにはどうすれば良いでしょうか? 1 2023/01/25 11:14
- JavaScript HTMLでJavaScriptを使ってパスワードの強化判定のプログラムを作成しています。 一通り作っ 2 2022/10/19 01:41
- JavaScript javascript作成してます。ラジオボタンで判定するコードを書いてます。 1 2023/07/18 11:03
- HTML・CSS CSSが効かずどのように指定すれば良いか分からないのでアドバイスお願い致します 2 2023/06/07 12:25
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/30 09:10
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
getElementsByNameで要素が取得...
-
リンク移動先のURLを取得
-
GoogleMAPのIE8での印刷について
-
テキストエリアへの記号代入
-
Backbone.js イベントが効かない
-
JavaScriptでのBMI計算について
-
Javascript でText file の書き...
-
指定したセルにrowspan属性を適...
-
ブラウザ上に固定させるメニュー
-
パソコンによってアクセスが拒...
-
SCRIPT5007: 未定義または NULL...
-
ボタンを押してテキストエリア...
-
javascriptの構文エラー
-
ホームページに日付によりかわ...
-
チェックボックスの選択パター...
-
<a href="#" …>の意味を教えて...
-
リンク先のJavaScriptを実行す...
-
bodyにidをつける理由は何ですか?
-
スタイルシートを使ってマウス...
-
別ファイルのfunctionの読み込み方
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
function の return 値を表示し...
-
getElementsByNameで要素が取得...
-
SCRIPT5007: 未定義または NULL...
-
JavaScriptでiframeの内容を「...
-
フォーカス移動抑止について
-
キーを押している間の時間を計...
-
JavaScript でキーを送る
-
bodyタグのfocus
-
ボタンのID名を取得するには?
-
JavaScriptでのEnterキーとAlt+...
-
リンク移動先のURLを取得
-
初心者javascript ウィンドウサ...
-
乱数を一定時間毎に表示させた...
-
自動ジャンプでフォームデータ...
-
idHOGEで取得したinnerText(数...
-
jQuery ツールチップの中のリンク
-
フレームサイズの変更について
-
AjaxでDBから取得したデータを...
-
JavaScriptでの西暦下2桁での表...
-
ページ全体を検索して特定文字...
おすすめ情報