2016-10-03 8 views
1

これを設定すると、最初に第3のvar宣言に不正なメソッド呼び出しがあったことに気付かなかった。私が望むようにページが機能し、すべてがうまくいった。JavaScriptがこの壊れたコンポーネントなしで実行されない

後で、検査官にエラーが記録されていることに気付きました。私は不快な行を取り除き、すべてがうまくいくはずですが、スクリプトはもう動作しません。奇妙な。だから、私はそれを修正し、getElementId('close')を正しいgetElementById('close')に変更し、スクリプト全体がまだ動作しません。

これは、正常に機能するにはスクリプトに壊れたコンポーネントが必要であることを示します。

これ以上動作しない部分はopenModal()であることに注意してください。 audio.setAttribute()audio.play()は同じブロック内にあり、それでも問題なく動作します。 closeFunc()は自動的にonclickと呼ばれるため、実際には、closeという文字列は必要ありません。

私のhtml:

<div id='myModal' class='modal'> 
     <div id='modal-content'> 
      <span onclick='closeFunc()' id='close'>close x</span> 
      <object id='pdf-enter' data='' type='application/pdf'><p id='fallback-text'>Your browser does not support this media. You can download it <a id='dl-link' href=''>here.</p></a></object> 
     </div> 
    </div> 

    <div class='aud'> 
     <audio id='paudio' src='../../music/Available Now.mp3' controls='controls' preload="metadata">Your browser does not support the <code>audio</code>element.</audio> 
     <p id='audio-metadata'></p> 
    </div> 

    . . . 

    <li><a href='#0' class='title'>Sassthefrass <i onclick='audiosass()' class="fa fa-play-circle-o fa-fw" aria-label='Listen to music.'></i> <i onclick='openModal(), sass()' class='fa fa-file-pdf-o fa-fw' aria-label='View the sheet music.'></i></a> 
    </li> 

とJavaScript

<script defer async> 

var modal = document.getElementById('myModal'); 
var here = document.getElementById('dl-link'); 
var close = document.getElementId('close'); 
var pdf = document.getElementById('pdf-enter'); 

function openModal() { 
    modal.style.display = "block"; 
}  

function sass() { 
    pdf.setAttribute('data', '../../scores/Sassthefrass Perusal.pdf'); 
    here.setAttribute('href', '../../scores/Sassthefrass Perusal.pdf'); 
} 

function closeFunc() { 
modal.style.display = "none"; 
} 
</script> 

正しく動作した場合、PDF FAのアイコンをクリックすると楽譜を示すPDFとモーダルを開きます。コードが「エラーフリー」であれば、これはこれ以上行いません。

これは縮小版ですが、全体としてはcortlandmahoney.com/pages/comp/acoustic.htmlでご覧になれます。このサイトはまだ開発中ですが、完了するまでは近いです。

+0

ブラウザコンソールでは何が報告されていますか? – Pointy

答えて

0

少し修正してもコードは問題なく機能しました。私はあなたを理解していない限り、私はあなたを理解する。

+0

それは問題です: 'getElementID'の代わりに' getElementByID'を表示するために3番目のvarを変更すると、モーダルはもう開きません。 – Naltroc

1

CloseはIDとして定義されていません。 あなたが「近いx」は として定義する必要があり、あなたのjavascriptのようにあなたが機能を割り当てることができます。私はあなたのウェブサイトのリンクを見て

document.getElementById('foo').onclick=function(){ 
alert("You have clicked close"); 
}; 

とjQueryに関するもう一つの例外があります。 jqueryでは、onclick関数を割り当てるには$('#id').onclick()関数を定義する必要があります。

+0

これは転写エラーでした。リンクされたページには、closeが適切な要素のIDとして定義されていることが示されています。上記のコードが更新されました。 – Naltroc

+0

この 'document.getElementById( 'close')のように非表示にする必要がありますonclick = function(){document.getElementById( 'myModal')。style.display = 'none';};'。私はこれをクロームコンソールでテストしました。 – Adarsh

+0

この 'document.getElementById( 'close')のように非表示にする必要があります。onclick = function(){document.getElementById( 'myModal')。style.display = 'none';};' openModalを呼び出す) 'onClick =" openModal(); openSomething(); "私はこれをクロームコンソールでテストしました。 saas()に別のエラーがあります。問題の解決方法についてはhttp://jsfiddle.net/jm6ky/2/を参照してください。 – Adarsh

関連する問題