0

助けが必要な問題があります。私はすでに約半日これに取り組んでいます。私はまだ学校に通っている新しいソフトウェア開発者です。

imageTabsListノードリストへのインデックスとして使用する乱数を生成しようとしており、getAttribute()メソッドを使用して、 for ループの下longdescの属性に書き込まれた画像パスソースを持つ HTML ファイルから属性の値を取得しています。longdescそのため、ページをリロードするたびに新しい画像が表示されます。私の質問は、.js ファイルでこれをどのように達成するかです

var ImagePicker = {    
      init: function() {      
    imagePic = document.getElementById('pic');        
    imageTabsDiv = document.getElementById('imageTabs');        
    imageTabList = imageTabsDiv.getElementsByTagName('img');        
    for(var i =0; i <imageTabList.length; i++) {        
      imageTabList[i].onclick = imageTabList.imageTabClick           
      function imageTabClick() {          
        imagePath = this.getAttribute('longdesc');            
        imagePath.src = imagePic;          
      };        
    };      
  randomIndex = imageTabList[randomPics];      
  randomIndex = imageTabsDiv.getAttribute('longdesc');      
  randomIndex.src = imagePic;      
  randomPics: function() {      
    return Math.floor(Math.random() + 1);      
  };      
  };    
};    
Core.start(ImagePicker);

HTMLファイルから参照しているコード...

<div id="primaryPic">
    <img src="images/pics/primaryPic.png" id="pic" alt="Primary Content Picture">
    
    <div id="imageTabs">
        <img src="images/pics/imageTab01.png" id="imageTab01" alt="imageTab01" longdesc="images/pics/bavLine.png"><br>
        <img src="images/pics/imageTab02.png" id="imageTab02" alt="imageTab02" longdesc="images/pics/frenchBugler.png"><br>
        <img src="images/pics/imageTab03.png" id="imageTab03" alt="imageTab03" longdesc="images/pics/Gendarme_a_Cheval_1870.png"><br>
        <img src="images/pics/imageTab04.png" id="imageTab04" alt="imageTab04" longdesc="images/pics/primaryPic.png">
    </div>
</div>

longdescページがリロードされるたびに属性を参照して写真を変更しようとしています。

4

1 に答える 1

1

からランダムに画像を選択するには、次のimageTabListようにします。

var randomImg = imageTabList[Math.floor(Math.random() * imageTabList.length)];

longDescページをロードするたびにランダムな属性を取得するには、次のコードを使用できます。

var imgs = document.getElementById("imageTabs").document.getElementsByTagName("img");
var randomImg = imgs[Math.floor(Math.random() * imgs.length)]
var randomLong = randomImg.getAttribute("longdesc");

data-longdesc="xxxx"参考までに、HTML5 互換性のために at 属性を使用する必要があります。


説明は次のとおりです。

Math.random()

0などのと1( を含む0、 を含まない1)の間のランダムな浮動小数点数を作成し0.4857462391ます。

Math.random() * imageTabList.length

0との間のランダムな浮動小数点数を作成しますimageTabList.length( を含み、など0は含まない.imageTabList.length8.239824379

その値を (配列インデックスの) 整数にするために、次のように呼び出しますMath.floor()

Math.floor(Math.random() * imageTabList.length)

これで、0 から imageTablList.length - 1 までのランダムな整数が得られました。これを使用して、その NodeList からランダムな項目を取得できます。


さらにヘルプが必要な場合は、HTML を表示してください。コードからは、何をしようとしているのかが明確ではありません。

于 2013-11-22T04:27:48.717 に答える