【问题标题】:Create three images based of the user's surname根据用户的姓氏创建三个图像
【发布时间】:2015-11-01 01:46:12
【问题描述】:

我想将用户输入的名称更改为 3 位数字 (000-999),然后根据给定的数字显示 3 个图像。

如果生成的数字是 015,那么显示的第一个图像是 000.jpg,第二个是 010.jpg,第三个是 005.jpg。每次输入名称时,我都希望得到相同的结果,如果可能的话,我想实时更新。我希望这有助于解决问题,我仍在尝试找出最好的方法。谢谢

目的是创建一个由 3 幅图像组成的插图,这些图像组合在一起、混合和匹配风格。

这是我目前所拥有的:http://jsfiddle.net/x19mLe73/

理想情况下,我希望用户输入他们的姓名和图像以更改为相应的数字。

function doSomeStuff() {

    document.getElementById("LastName").text = "Connor"; // Simulate User Input
    var lastName = document.getElementById("LastName").text;
    var myPics = document.getElementById("myPics");

    var sum = 0;
    for(var i=0; i<lastName.length;i++)
    {
      sum += lastName.charCodeAt(i);
    }

    sum = (sum%1000);
    var firstPic = (sum + "").split('')[0] + "00.jpg";
    var secondPic = "0" + (sum + "").split('')[1] + "0.jpg";
    var thirdPic = "00" + (sum + "").split('')[2] + ".jpg";

    var imgToAdd1 = document.createElement("img");
    imgToAdd1.src = firstPic;
    imgToAdd1.alt = firstPic;
    myPics.appendChild(imgToAdd1);

    var imgToAdd2 = document.createElement("img");
    imgToAdd2.src = secondPic;
    imgToAdd2.alt = secondPic;
    myPics.appendChild(imgToAdd2);

    var imgToAdd3 = document.createElement("img");
    imgToAdd3.src = thirdPic;
    imgToAdd3.alt = thirdPic;
    myPics.appendChild(imgToAdd3);
}

doSomeStuff();

【问题讨论】:

  • 你的小提琴怎么了?

标签: javascript css image random hash


【解决方案1】:

我通过将您的 .value 分配更改为 .text 使其工作。图像仍会损坏,但现在它们指向正确的 3 位数文件名。

window.doSomeStuff = function() {

    var lastName = document.getElementById("LastName").value;
    var myPics = document.getElementById("myPics");

    var sum = 0;
    for (var i = 0; i < lastName.length; i++) {
        sum += lastName.charCodeAt(i);
    }

    sum = (sum % 1000);
    var firstPic = (sum + "").split('')[0] + "00.jpg";
    var secondPic = "0" + (sum + "").split('')[1] + "0.jpg";
    var thirdPic = "00" + (sum + "").split('')[2] + ".jpg";

    myPics.innerHTML = "";
  
    var imgToAdd1 = document.createElement("img");
    imgToAdd1.src = firstPic;
    imgToAdd1.alt = firstPic;
    myPics.appendChild(imgToAdd1);

    var imgToAdd2 = document.createElement("img");
    imgToAdd2.src = secondPic;
    imgToAdd2.alt = secondPic;
    myPics.appendChild(imgToAdd2);

    var imgToAdd3 = document.createElement("img");
    imgToAdd3.src = thirdPic;
    imgToAdd3.alt = thirdPic;
    myPics.appendChild(imgToAdd3);

}
img {
    border: 1px;
    width: 200px;
    height: 20px;    
}
<input id="LastName" value="Connor" />
<div id="myPics">
</div>
<button onclick="doSomeStuff();" >Go</button>

【讨论】:

  • 谢谢!那太棒了。当用户输入另一个名称时,有什么方法可以删除以前的图像?
  • @JordanConnor 您需要使用myPics.innerHTML = ""; 清除输出元素。我刚刚编辑了我的答案以添加它,再次检查示例!
  • “我发现的一些错误”,只有一个,您需要在输入中使用 .value 而不是 .text。这也是您对原始代码所做的全部更改,您应该这样说,以便 OP 知道他们做错了什么。而且您当前的代码中仍然有一个.text 分配。
  • @JordanConnor 你的功能正在蔓延。不要成为功能蠕虫meta.stackexchange.com/questions/43478/…
  • @JordanConnor 您不应该用正确答案更新问题,而只需将正确答案(这个)标记为“已接受”
猜你喜欢
  • 1970-01-01
  • 2023-04-03
  • 1970-01-01
  • 2013-05-01
  • 1970-01-01
  • 2019-11-04
  • 2021-04-05
  • 1970-01-01
  • 2022-01-25
相关资源
最近更新 更多