2017-04-25 3 views
0

Ajaxで情報を渡すことに関して質問があります。私は様々なセクションを持つメインページからなるプロジェクトを持っています。各セクションはajaxを使用して読み込まれます。ホームページには、プラスとマイナスの矢印を使用して閲覧できる画像ギャラリーがあります。 gallery.htmlページには、すべての画像のサイズが小さくなっています。私は時間を節約するためにここにCSSを再現しません。 eh jsファイルを見ると、ホームページにはブラウズするために画像のソースを変更する簡単な機能があることがわかります。AJAXの内容を変更しました。

ギャラリーページで画像をクリックすると、ホームページがロードされているだけでなく、クリックした画像が読み込まれます。

私の機能

$(document).on('click', '.littleImages', function(e){ 
var imageSource = $(this).attr('src'); 
$('#container').remove(); 
$('#content').load('index.html' + ' #content').hide().fadeIn('slow'); 
$('#front').attr('src', imageSource); 
}); 
    }); 

が機能していません。これは私の最初の試みで、Ajaxでこのようなことをすることです。私はあなたのAjaxリクエストで情報を渡すことができると思うが、それを行う方法があまりにもわからない。私はこれについてどうやって行くのですか?ありがとうございました。あなたはまだDOMにロードされていない要素にアクセスしようとしている

index.htmlを

<!DOCTYPE html> 
<html lang="en-US"> 

    <head> 

     <meta charset="UTF-8"> 
     <title>Photography</title> 
     <link rel="stylesheet" type="text/css" href="styles.css"> 

    </head> 

    <body> 

    <div id="header"> 
     <div id="title"><h1>TITLE<span id="subtitle">SUBTITLE</span></h1></div> 
      <nav class="cf" id="menu"> 
      <ul> 
      <li><a href="about.html">ABOUT</a></li> 
      <li><a href="gallery.html">GALLERY</a></li> 
      <li><a href="bio.html">BIO</a></li> 
      <li><a href="contact.html">CONTACT</a></li> 
      <li><a href="index.html" class="current">HOME</a></li> 
      </ul> 
      </nav> 
    </div> 

    <section id="content"> 

    <div id="container"> 

     <div id="imagewrap"> 
     <img src="Images/Images/Image1.jpg" id="front" /> 

     <div id="previous" class="buttons"></div> 

     <div id="next" class="buttons"></div> 
     </div> 

    </div> <!-- end of content --> 

    </section> <!-- end of container --> 


    <div id="footer"> 
    </div> 

    <script type="text/javascript" src="jquery-3.1.0.min.js"></script> 
    <script type="text/javascript" src="JavaScript.js"></script> 

    </body> 

</html> 

gallery.html

<!DOCTYPE html> 
<html lang="en-US"> 

    <head> 

    <meta charset="UTF-8"> 
    <title>Photography</title> 
    <link rel="stylesheet" type="text/css" href="styles.css"> 

    </head> 

    <body> 

    <section id="content"> 

    <div id="container"> 

     <div id="gallery" class="sections"> 
     <img src="Images/Image1.jpg" class="littleImages"> 
     <img src="Images/Image2.jpg" class="littleImages"> 
     <img src="Images/Image3.jpg" class="littleImages"> 
     <img src="Images/Image4.jpg" class="littleImages"> 
     <img src="Images/Image5.jpg" class="littleImages"> 
     <img src="Images/Image6.jpg" class="littleImages"> 
     <img src="Images/Image7.jpg" class="littleImages"> 
     <img src="Images/Image8.jpg" class="littleImages"> 
     <img src="Images/Image9.jpg" class="littleImages"> 
     <img src="Images/Image10.jpg" class="littleImages"> 
     <img src="Images/Image11.jpg" class="littleImages"> 
     <img src="Images/Image12.jpg" class="littleImages"> 
     <img src="Images/Image13.jpg" class="littleImages"> 
     <img src="Images/Image14.jpg" class="littleImages"> 
     <img src="Images/Image15.jpg" class="littleImages"> 
     <img src="Images/Image16.jpg" class="littleImages"> 
     <img src="Images/Image17.jpg" class="littleImages"> 
     <img src="Images/Image18.jpg" class="littleImages"> 
     <img src="Images/Image19.jpg" class="littleImages"> 
     <img src="Images/Image20.jpg" class="littleImages"> 

     </div> 

    </div> <!-- end of content --> 

    </section> <!-- end of container --> 

    </body> 

</html> 

の.js

$(document).ready(function() { 

$("#imagewrap").hide(); 

function showPicture() { 
$("#imagewrap").fadeIn('slow'); 
} 

setTimeout(showPicture, 2000); 

$("nav a").on('click', function(e){ 
    e.preventDefault(); 
    var url = this.href; 
    $("nav a.current").removeClass("current"); 
    $(this).addClass("current"); 
    $('#container').remove(); 
    $('#content').load(url + ' #content').hide().fadeIn('slow'); 
    }); 


counter = 1; 
$('.buttons').on('click', function(e){ 
    if (counter < 1 || counter > 5) {return false;} 
    var id = e.target.id; 
    if (id == "next" && counter < 5){counter++; 
    } else if (id == "previous" && counter > 1){counter--;} 
    getImage(); 
}); 
getImage = function() { 
    document.getElementById("front").src = "Images/Images/Image" + counter + ".jpg"; 
} 

$(document).on('click', '.littleImages', function(e){ 
var imageSource = $(this).attr('src'); 
$('#container').remove(); 
$('#content').load('index.html' + ' #content').hide().fadeIn('slow'); 
$('#front').attr('src', imageSource); 
}); 
    }); 
+1

'$( 'フロント').ATTR( 'SRC'、ImageSourceは);' –

+0

おかげ; '' $( '#front').ATTR( 'SRC'、ImageSourceは)する必要があります。私は入力ミスを修正しましたが、まだ動作しません – Paul

答えて

0

。その名前が示すように、AJAXは「非同期」です。 load()が完了する前に、front要素のソースを設定しようとしています。完了コールバックを使用してこれを修正してください。

$('#content').load('index.html' + ' #content', function(){ 
    $('#front').attr('src', imageSource); 
}).hide().fadeIn('slow'); 
関連する問題