2017-10-27 12 views
-1

私の機能はグローバルではないので、私はそれを変更しましたが、私のshowSlides関数のみが適用されていない/動作していないことが問題であるかもしれません。これをどうやって解決するのですか?申し訳ありませんが、明らかな答えがある場合、私はwebdevにはとても新しいです。1つのJS関数は機能しませんが、残りはjsfiddleでは正常ですか?

注:currentSlideとplusSlidesが動作しているかどうかは、showSlidesが動作していないためわかりませんが、問題が接続されていると仮定しています。

https://jsfiddle.net/8ynLwfcf/

window.openModal = function openModal() { 
 
    document.getElementById('myModal').style.display = "block"; 
 
} 
 
window.closeModal = function closeModal() { 
 
    document.getElementById('myModal').style.display = "none"; 
 
} 
 

 
var slideIndex = 1; 
 
showSlides(slideIndex); 
 

 
window.plusSlides = function plusSlides(n) { 
 
    showSlides(slideIndex += n); 
 
} 
 

 
window.currentSlide = function currentSlide(n) { 
 
    showSlides(slideIndex = n); 
 
} 
 

 
function showSlides(n) { 
 
    var i; 
 
    var slides = document.getElementsByClassName("mySlides"); 
 
    var dots = document.getElementsByClassName("demo"); 
 
    var captionText = document.getElementById("caption"); 
 
    if (n > slides.length) { 
 
    slideIndex = 1 
 
    } 
 
    if (n < 1) { 
 
    slideIndex = slides.length 
 
    } 
 
    for (i = 0; i < slides.length; i++) { 
 
    slides[i].style.display = "none"; 
 
    } 
 
    for (i = 0; i < dots.length; i++) { 
 
    dots[i].className = dots[i].className.replace(" active", ""); 
 
    } 
 
    slides[slideIndex - 1].style.display = "block"; 
 
    dots[slideIndex - 1].className += " active"; 
 
    captionText.innerHTML = dots[slideIndex - 1].alt; 
 
}
body { 
 
    font-family: Verdana, sans-serif; 
 
    margin: 0; 
 
} 
 
    
 
* { 
 
    box-sizing: border-box; 
 
} 
 
    
 
.row > .column { 
 
    padding: 0 8px; 
 
} 
 
    
 
.row:after { 
 
    content: ""; 
 
    display: table; 
 
    clear: both; 
 
} 
 
    
 
.column { 
 
    float: left; 
 
    width: 25%; 
 
} 
 
/* The Modal (background) */ 
 
    
 
.modal { 
 
    display: none; 
 
    position: fixed; 
 
    z-index: 1; 
 
    padding-top: 100px; 
 
    left: 0; 
 
    top: 0; 
 
    width: 100%; 
 
    height: 100%; 
 
    overflow: auto; 
 
    background: rgba(0, 0, 0, 0.9); 
 
} 
 
/* Modal Content */ 
 
    
 
.modal-content { 
 
    position: relative; 
 
    background-color: rgba(0, 0, 0, 0.9); 
 
    margin: auto; 
 
    padding: 0; 
 
    width: 90%; 
 
    max-width: 1200px; 
 
} 
 
/* The Close Button */ 
 
    
 
.close { 
 
    color: white; 
 
    position: absolute; 
 
    top: 10px; 
 
    right: 25px; 
 
    font-size: 35px; 
 
    font-weight: bold; 
 
} 
 
    
 
.close:hover, 
 
.close:focus { 
 
    color: #999; 
 
    text-decoration: none; 
 
    cursor: pointer; 
 
} 
 
    
 
.mySlides { 
 
    display: none; 
 
} 
 
    
 
.cursor { 
 
    cursor: pointer 
 
} 
 
/* Next & previous buttons */ 
 
    
 
.prev, 
 
.next { 
 
    cursor: pointer; 
 
    position: absolute; 
 
    top: 50%; 
 
    width: auto; 
 
    padding: 16px; 
 
    margin-top: -50px; 
 
    color: white; 
 
    font-weight: bold; 
 
    font-size: 20px; 
 
    transition: 0.6s ease; 
 
    border-radius: 0 3px 3px 0; 
 
    user-select: none; 
 
    -webkit-user-select: none; 
 
} 
 
/* Position the "next button" to the right */ 
 
    
 
.next { 
 
    right: 0; 
 
    border-radius: 3px 0 0 3px; 
 
} 
 
/* On hover, add a black background color with a little bit see-through */ 
 
    
 
.prev:hover, 
 
.next:hover { 
 
    background-color: rgba(0, 0, 0, 0.8); 
 
    text-decoration: none; 
 
} 
 
/* Number text (1/3 etc) */ 
 
    
 
.numbertext { 
 
    color: #f2f2f2; 
 
    font-size: 12px; 
 
    padding: 8px 12px; 
 
    position: absolute; 
 
    top: 0; 
 
} 
 
    
 
img { 
 
    margin-bottom: -4px; 
 
} 
 
    
 
t img.hover-shadow { 
 
    transition: all .2s ease-in-out; 
 
} 
 
    
 
.hover-shadow:hover { 
 
    transform: scale(1.1); 
 
} 
 
    
 
.modal-content { 
 
    -webkit-animation-name: zoom; 
 
    -webkit-animation-duration: 0.6s; 
 
    animation-name: zoom; 
 
    animation-duration: 0.6s; 
 
} 
 
    
 
@-webkit-keyframes zoom { 
 
    from { 
 
    -webkit-transform: scale(0) 
 
    } 
 
    to { 
 
    -webkit-transform: scale(1) 
 
    } 
 
} 
 
    
 
@keyframes zoom { 
 
    from { 
 
    transform: scale(0) 
 
    } 
 
    to { 
 
    transform: scale(1) 
 
    } 
 
}
<body> 
 

 
    <h2 style="text-align:center">Modal Albums</h2> 
 

 
    <div class="row"> 
 
    <div class="column"> 
 
     <img src="https://www.yosemitehikes.com/images/wallpaper/yosemitehikes.com-bridalveil-winter-1200x800.jpg" style="width:100%" onclick="openModal();currentSlide(1)" class="hover-shadow cursor"> 
 
    </div> 
 
    </div> 
 

 
    <div id="myModal" class="modal"> 
 
    <span class="close cursor" onclick="closeModal()">&times;</span> 
 
    <div class="modal-content"> 
 

 
     <div class="mySlides"> 
 
     <div class="numbertext">1/4</div> 
 
     <img src="https://www.yosemitehikes.com/images/wallpaper/yosemitehikes.com-bridalveil-winter-1200x800.jpg" style="width:100%"> 
 
     </div> 
 

 
     <div class="mySlides"> 
 
     <div class="numbertext">2/4</div> 
 
     <img src="http://www.hardwallpapers.com/uploads/3527_Smudge-hdr.jpg" style="width:100%"> 
 
     </div> 
 

 
     <div class="mySlides"> 
 
     <div class="numbertext">3/4</div> 
 
     <img src="https://assets.rockefellerfoundation.org/app/uploads/20151124121133/15659655525_e6cfc22b56_o-1200x800.jpg" style="width:100%"> 
 
     </div> 
 

 
     <div class="mySlides"> 
 
     <div class="numbertext">4/4</div> 
 
     <img src="https://support.kickofflabs.com/wp-content/uploads/2016/06/800x1200.png" style="width:100%"> 
 
     </div> 
 

 
     <a class="prev" onclick="plusSlides(-1)">&#10094;</a> 
 
     <a class="next" onclick="plusSlides(1)">&#10095;</a> 
 

 
    </div> 
 
    </div>

+2

と呼ばれますstackoverflowは私に "* *あなたの質問を編集して無関係なコードブロックを削除してください。あなたの質問の本文に直接関連するコードを入力してください。 Fiddlesは役に立つ補足的なリソースですが、あなたが求めているコードの唯一のソースとして信頼すべきではありません。問題については、あなたのブラウザのコンソールをチェックしましたか? (実行時にエラーが表示される場合は、問題の絞り込みに役立ちます) – nnnnnn

+0

各コードブロックを表示し、各ステップで何が起こっているのかを説明してみると、「デバッグ」コード ' –

+0

ブラウザ**開発者**ツールコンソール(stckoverflowの前であっても、デバッグの最初のポイントになるはずです)は 'TypeError:dots [(slideIndex - 1)]は未定義です。 –

答えて

0

バリアブルドットclassName 'のデモ' は任意の要素を持っていないので、空です。 captionTextは空でも、idが 'caption'の要素はありません。

0

widowオブジェクトに関数を定義する必要はありません。

function openModal() { 
    document.getElementById('myModal').style.display = "block"; 
} 

window.openModal = function openModal() { 
    document.getElementById('myModal').style.display = "block"; 
} 

のように、すべての関数定義を変更する あなたは、設定を変更することで、スクリプトを実行jsFiddle方法を変更することができます。同様の答えに

リンク:ここSimple onload doesn't work in JSFIddle

enter image description here

が固定jsFiddleリンクですhttps://jsfiddle.net/8ynLwfcf/9/

何classNameが存在しないとあなたはdot不足している変数を修正する必要がありますが、「* demo

関連する問題