2017-10-03 3 views
2

動作しないでしょう範囲は1から6まで行かなければならないし、それが動作するように、それはサイコロであったが、私はこのようなscriptのようなHTMLの内部全体のJavaScriptコードを挿入するときにのみ実行されます。JavaScriptが任意のブラウザで実行されないと有効になっている - 交換したのdocument.writeを警告するために、まだ私が唯一のVAR「NUMERO」はかのように乱数を返す必要があり、この一見単純なスニペットをしようとしている

<!doctype html> 
 
<html> 
 

 
<head> 
 
    <meta charset="utf-8"> 
 
    <title>JavaScript Dice</title> 
 
    <script type="text/javascript"> 
 
    var numero = Math.random(); 
 
    numero = numero * 6; 
 
    numero++; 
 
    numero = Math.floor(numero); 
 
    document.write("Random dice number is: " + numero + "<br><br>") 
 
    </script> 
 
</head> 
 

 
<body> 
 

 
    <p>This is the main</p> 
 

 
</body> 
 

 
</html>

が、 、私はそれが悪い習慣であるので、私はdocument.write();を使用してはならないことがたくさんあるnゆっくりか何か?私はまだそれまで私の方法を読んでいる)と私は他の質問で見てきた解決策を適用しようとしたが、彼らは非常に具体的なので、私はそのような特定の要素で実装するのは難しいので、だから、どうかこの場合はdocument.writeの代わりに何を使うことができますか?以下のコードが動作しない理由

MY BIG質問は?

  • 私の最初の試みは、のようにHTMLからJavaScriptファイルをリンクしました:

// The Math Object 
 
var numero = Math.random(); 
 
numero = numero * 6; 
 
numero = Math.floor(numero); 
 
numero++; 
 
document.write("Random number: " + numero + "<br><br>");
<!doctype html> 
 
<html> 
 

 
<head> 
 
    <meta charset="utf-8"> 
 
    <title>JavaScript dice</title> 
 
    <script src="MathObject.js" language="javascript" type="text/javascript"> 
 
    </script> 
 
</head> 
 

 
<body> 
 
    <p>This is the main </p> 
 
</body> 
 

 
</html>

これは、任意のブラウザでは機能しません - JavaScriptの場合、私はチェックしました有効になっている、私が再起動した設定​​は、私はChromeを試してみた、エッジは、Internet Explorerは、それだけでは役に立たないのDreamweaver CC 2017自体の内部コードのスプリット/ライブビューで動作しますが、私はコードがの作品を知っていますただ返します:これはメインです。

さらに私はdocument.writeを警告メッセージに置き換えてテストしました.DreamWeaverやコードエディタ内で実行しない限り、どちらも動作しませんでした。

// The Math Object 
 
var numero = Math.random(); 
 
numero = numero * 6; 
 
numero = Math.floor(numero); 
 
numero++; 
 
alert("Random number: " + numero);

私は解決策を模索しようとしているクレイジー行きましたが、HTML内のすべてのJavaScriptを実施することを決定しました。私はこれを文書に印刷する必要があるので、これまたはより適切な方法の解決策が必要です。

わかりました: - JavaScriptはスクリプトのように完全にHTML内にある場合にのみ機能します。 - 多くの数字やループを印刷したくありません。一つだけ。 - HTMLのすべてを書かなくても、JavaScriptの文書を文書に印刷するにはどうすればいいですか? このすべてのヘルプはどうですか?事前のおかげで;)

+1

は、お使いのブラウザで、開発者ツールを開きます。私はあなたが404ファイルを持っていると推測しています。 .jsファイルはhtmlファイルと同じフォルダにありますか? – epascarello

+1

'document.write()'はドキュメント全体を上書きします。 – PHPglue

+0

@PHPglue実際には真実ではない....なぜアラートは失敗し、元のスクリプトはなぜ機能するのだろうか? – epascarello

答えて

3

これはファイル参照に関する問題のように聞こえます。あなたはF12 Developer Toolsを確認した場合、おそらく、それはファイルMathObject.jsを見つけることができないことを知らせるています。

<script src="MathObject.js" language="javascript" type="text/javascript">の行には、と同じフォルダ内のMathObject.jsであることが記載されています。

あなたは、単にプロジェクトに含めるのを忘れているかもしれないが、それはあなたが間違ってそれを参照することがより可能性があります。MathObject.jsファイルが実際に存在する場所によっては、おそらくこの参照を変更する必要があります。

  • あなたは一つのフォルダを移動するため相対リンク../MathObject.jsを使用することができます。
  • ルート相対リンク/MathObject.jsを使用すると、常にルートを参照できます。
  • 絶対リンクhttps://example.com/MathObject.jsを使用すると、ホストされたバージョンを読み込むことができます。相対と絶対URLでさらに読書のために

、私はこのCoffee Cup articleをチェックアウトをお勧めします。

希望すると便利です。 :)うまくいけば、あなたはここから何かを学ぶことができる

+0

ありがとう、これはすべて非常に便利ですが、私はいつもそれを確認するので、ファイルが完璧にリンクされていることを恐れています。私は自分でもリンクを書いていない。 Dreamweaver自体のツールを使用してリンクします。そして、コードを編集するときにそれを表示します。 –

+0

ええ、私はそれが原因だとほとんど確信しています - それは少なくともそれを確認するために傷つけることはありません。あなたのフォルダ構造はどのように見えますか?メインのHTMLファイルはどこにありますか? 'MathObject.js'はどこですか?また、 'partials' /' includes'を使っていますか?それは構造を破壊するためです。 PHPの '/ subfolder/two.php'を'/one.php'に '/ subfolder /'にJSを含めてPHPに 'two.php'のJavaScript作業をさせます** **' one.php'。 –

+0

はい、ルートサイトが別のディスクにセットされていたので、私はすべてを再構築しなければなりませんでした。彼らがルートファイルの外にいるときにファイルがどう働かないのか不思議です...まあ、必ずしもそうではありません。これは私が出会ったその種の最初のケースです。 HTMLでリンクされた他のすべてのファイルは、ルートサイトフォルダの外にあっても機能しています。だから私はそれがそれに影響を与えないと確信していたのですが、これは時々これらのことが起こる方法です。ありがとう、それは再構築するのはちょっと面倒でしたが、大変必要でした! WORKED&SOLVED –

-1

//<![CDATA[ 
 
// external.js 
 
var pre = onload, doc, bod, C, E, rollEm; // for use on other loads 
 
onload = function(){ 
 
if(pre)pre(); // change var pre if using technique on other pages 
 
doc = document; bod = doc.body; 
 
C = function(tag){ 
 
    return doc.createElement(tag); 
 
} 
 
E = function(id){ 
 
    return doc.getElementById(id); 
 
} 
 
var out = E('out'), dice = E('dice'), dv; 
 
function rollEm(dice, sides, outputRowElement){ 
 
    outputRowElement.innerHTML = ''; 
 
    for(var i=0,td,l=dice; i<l; i++){ 
 
    td = C('td'); td.innerHTML = Math.floor(Math.random()*sides)+1; 
 
    outputRowElement.appendChild(td); 
 
    } 
 
} 
 
E('roll').onclick = function(){ 
 
    dv = dice.value; 
 
    if(!dv.match(/^[0-9]+$/)){ 
 
    dv = dice.value = 1; 
 
    } 
 
    rollEm(dv, 6, out); 
 
} 
 
} 
 
//]]>
/* external.css */ 
 
html,body{ 
 
    padding:0; margin:0; 
 
} 
 
.main{ 
 
    width:940px; padding:20px; margin:0 auto; 
 
} 
 
label{ 
 
    margin-right:4px; 
 
} 
 
#dice{ 
 
    width:40px; 
 
} 
 
td{ 
 
    padding:5px; border:1px solid #000; 
 
}
<!DOCTYPE html> 
 
<html xmlns='http://www.w3.org/1999/xhtml' xml:lang='en' lang='en'> 
 
    <head> 
 
    <meta http-equiv='content-type' content='text/html;charset=utf-8' /> 
 
    <meta name='viewport' content='width=device-width' /> 
 
    <title>Lame Dice</title> 
 
    <link type='text/css' rel='stylesheet' href='css/external.css' /> 
 
    <script type='text/javascript' src='external.js'></script> 
 
    </head> 
 
    <body> 
 
    <div class='main'> 
 
     <label for='dice'>Dice</label><input id='dice' name='dice' type='text' value='1' /><input id='roll' name='roll' type='button' value='Roll &apos;em' /> 
 
     <table><tbody><tr id='out'></tr></tbody></table> 
 
    </div> 
 
    </body> 
 
</html>

+0

私は嫉妬のためにダウンボークをチョークする必要があります。私はあなたよりも多くのポイントを持っていなければなりません。あなたが見ることができるように、私のコードには便利なテクニックがたくさんあるので、あなたは一番上にとどまるためにダウンダウンします。 – PHPglue

関連する問題

 関連する問題