【问题标题】:After one click set two different image in two div in javascript单击后在javascript中的两个div中设置两个不同的图像
【发布时间】:2016-03-02 05:33:10
【问题描述】:

我正在使用 java 脚本实现定制 T 恤。现在我在单击图像选择后设置了一个背景图像。但是现在我想在单击一次后在两个 div 中设置两个不同的图像。

如果用户点击黄色 T 恤,则在两个不同的 div 中设置两个图像。(T 恤的正面尺寸图像和背面图像)。

var bgArray = [
  'https://d3s16h6oq3j5fb.cloudfront.net/1.13.0/img/new-city-home/bang-img/softtoys3.jpg',
  'https://d2z4fd79oscvvx.cloudfront.net/0020715_be_my_valentine_chocolate_box_205.jpeg',
   'https://d2z4fd79oscvvx.cloudfront.net/0016630_quad_diamond_earings_205.jpeg',
];

$(".picker-image").on("click", "img", function() {
  $('.backgroundIMage').css({
    'background-image': 'url(' + this.src + ')'
  });
});

$(function() {
  bgArray.forEach(function(src) {
    var img = new Image(50, 50);
    img.src = src;
    $(".picker-image").append(img);
  });
});
.backgroundIMage{
    width:400px;
    height:300px;
    outline:1px dotted gray;
    margin:0 auto;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>

  
  <div class="picker-image"></div>



<!-- for demo only -->
<hr>
<div class="backgroundIMage"></div>
<div style="height:200px;width:200px;border:1px solid #333">
Front Side Image
</div>
<div style="height:200px;width:200px;border:1px solid #333">
back Side Image
</div>

最后,我想单击 T 恤,然后将两个图像设置为图像的两个 div 正面和图像背面。

提示 https://jsfiddle.net/varunPes/p9L76j0z/2/

【问题讨论】:

  • 你怎么知道哪个是正面哪个是背面?
  • 我认为应该在正面和背面添加两个图像。如果用户点击黄色 T 恤,那么应该得到两个图像。
  • 你有什么问题?
  • 打开此链接99tshirts.com/p/58932/bruce_lee_fan_tshirt 并单击(自定义此设计)按钮。那么可能就清楚了。
  • 但是这里不清楚。该链接将来会腐烂。 StackOverflow 上的问题应该确定问题和预期结果。此处均不包含

标签: javascript jquery arrays html


【解决方案1】:

您需要存储正面和背面图像之间的关系。我建议使用一个对象数组,其中数组中的每个项目都包含正面和背面图像。然后当点击选择器项时,就可以填充前后图了。

var bgArray = [
  {
    front: 'https://d2z4fd79oscvvx.cloudfront.net/0020715_be_my_valentine_chocolate_box_205.jpeg',
    back: 'http://lorempixel.com/200/200/sports/1/'
  },
  {
    front: 'https://d2z4fd79oscvvx.cloudfront.net/0016630_quad_diamond_earings_205.jpeg',
    back: 'http://lorempixel.com/200/200/sports/2/'
  },
  {
    front: 'https://d3s16h6oq3j5fb.cloudfront.net/1.13.0/img/new-city-home/bang-img/softtoys3.jpg',
    back: 'http://lorempixel.com/200/200/sports/3/'
  }
];

$(".picker-image").on("click", "img", function() {
  //find the item in the array where the 'front' matches the URL of the image that was clicked
  var src = this.src;
  var item = bgArray.find(function(element) {
    return element.front === src;
  });
  
  //set the front image
  $("#front").css({
    'background-image': 'url(' + item.front + ')'
  });

  //set the back image
  $("#back").css({
    'background-image': 'url(' + item.back + ')'
  });
  
  //indicate the selected one
  $(".picker-image img").removeClass("selected");
  $(this).addClass("selected");
  
});

$(function() {
  //dynamically populate image picker
  bgArray.forEach(function(item) {
    var img = new Image(50, 50);
    img.src = item.front;
    $(".picker-image").append(img);
  });

  //select the first one by default
  $(".picker-image img").first().trigger("click");
});
.product {
  height:200px;
  width:200px;
  border:1px solid #333;
  margin:10px;
  display: inline-block;
}

.picker-image img {
  padding: 5px;  
}

.selected {
  background-color: dodgerblue;
  border-radius : 10px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>

Pick One
<div class="picker-image"></div>

<hr>
<div id="front" class="product">
  Front Side Image
</div>
<div id="back" class="product">
  Back Side Image
</div>

【讨论】:

  • 我刚刚添加了一个小提琴提示。请检查。
  • 我希望当用户点击一个 T 恤图像然后将两个图像附加到两个 div 中。这两个图像是背面和正面图像。
  • 你能想一想吗?如果单击前面的图像,然后自动单击相同的背面图像。如果可能,那么它对我来说是完整的。
  • 非常感谢。抱歉错过沟通。然后投票帮助他人。再次感谢。这对我来说非常有用。
  • 我有一个疑问。当我从我的项目中放置图像链接时。然后它正在显示。 TypeError: item is undefined: 'background-image': 'url(' + item.front + ')'
【解决方案2】:

为此,您必须创建一个默认的 JSON 结构,如下所示:

{
 data:[
  {
   "mainSrc":"https://d3s16h6oq3j5fb.cloudfront.net/1.13.0/img/new-city-home/bang-img/softtoys3.jpg",
   "backSrc":"sss.jpg",
   "frontSrc":"sddsd.jpg"
  },
{
   "mainSrc":"https://d3s16h6oq3j5fb.cloudfront.net/1.13.0/img/new-city-home/bang-img/softtoys3.jpg",
   "backSrc":"sss.jpg",
   "frontSrc":"sddsd.jpg"
  }
 ]
}

然后从click元素attr和get front back src中动态引用索引。

【讨论】:

【解决方案3】:

请参考下面这个小提琴:

小提琴:fiddle

只需在 html 代码中为前后图像 div 添加 id 并通过 javascript 分配图像背景。这是修改后的代码。

var bgArray = [
  'https://d3s16h6oq3j5fb.cloudfront.net/1.13.0/img/new-city-home/bang-img/softtoys3.jpg',
  'https://d2z4fd79oscvvx.cloudfront.net/0020715_be_my_valentine_chocolate_box_205.jpeg',
  'https://d2z4fd79oscvvx.cloudfront.net/0016630_quad_diamond_earings_205.jpeg',
];

$(".picker-image").on("click", "img", function() {
  $('.backgroundIMage').css({
    'background-image': 'url(' + this.src + ')'
  });
  $('#front').css({
    'background-image': 'url(' + bgArray[1] + ')'
 });
 $('#back').css({
   'background-image': 'url(' + bgArray[2] + ')'
 });
});

<div style="height:200px;width:200px;border:1px solid #333" id="front">
  Front Side Image
</div>
<div style="height:200px;width:200px;border:1px solid #333" id="back">
  back Side Image
</div>

【讨论】:

  • 请不要让人们在您的代码与 OP 代码中玩“找出差异”。只回答代码而没有解释更改的内容对任何人来说几乎没有价值
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-22
  • 2021-09-30
  • 2014-09-29
  • 1970-01-01
  • 2012-01-03
  • 2021-02-20
相关资源
最近更新 更多