将数字列表转换为代码
Convert list of numbers to code
我得到一个包含40个数字的列表,我必须将其转换为代码。下面是列表的一半的例子:
97811019879719780385349741978038554236497815500221349781501132933978034553109497803742800249780670026197978125006979597800622977169781250075727978150113988897800623005469780812988406978081299354797814555397419780062363596978110198260097816300605899780735220775
首先,我必须取每个数字并将其添加到这行代码中(替换'a'和'img'标签的数字)
<li>
<a href="/book/9780143034759">
<img src="http://images.booksense.com/images/759/034/9780143034759.jpg" />
</a>
然后在img标签上,我必须将最后3个数字移动到链接中的第一个位置,然后从末尾移动第二个三个数字,并替换第二个位置,以便img链接工作。
那么每隔10li,我必须用:
<div class="book-cover-list">
<ul>
</ul>
</div>
我的想法是有一个HTML文档,我可以粘贴到数字列表,然后有一个javascript或jquery脚本,将为我做所有的工作。但是,我真的不知道怎么做。因此,任何帮助都将是非常感激的。
完成后的代码如下:
<div class="book-cover-list">
<ul>
<li><a href="/book/9780143034759"><img src="http://images.booksense.com/images/759/034/9780143034759.jpg" /></a>
<li><a href="/book/9781476728759"><img src="http://images.booksense.com/images/759/728/9781476728759.jpg" /></a>
<li><a href="/book/9780143125471"><img src="http://images.booksense.com/images/471/125/9780143125471.jpg" /></a>
<li><a href="/book/9780316017930"><img src="http://images.booksense.com/images/930/017/9780316017930.jpg" /></a>
<li><a href="/book/9780307408877"><img src="http://images.booksense.com/images/877/408/9780307408877.jpg" /></a>
<li><a href="/book/9781250092335"><img src="http://images.booksense.com/images/335/092/9781250092335.jpg" /></a>
<li><a href="/book/9780316322423"><img src="http://images.booksense.com/images/423/322/9780316322423.jpg" /></a>
<li><a href="/book/9780143109259"><img src="http://images.booksense.com/images/259/109/9780143109259.jpg" /></a>
<li><a href="/book/9781451659177"><img src="http://images.booksense.com/images/177/659/9781451659177.jpg" /></a>
<li><a href="/book/9780147515995"><img src="http://images.booksense.com/images/995/515/9780147515995.jpg" /></a>
</ul>
</div>
<div class="book-cover-list">
<ul>
<li><a href="/book/9780143034759"><img src="http://images.booksense.com/images/759/034/9780143034759.jpg" /></a>
<li><a href="/book/9781476728759"><img src="http://images.booksense.com/images/759/728/9781476728759.jpg" /></a>
<li><a href="/book/9780143125471"><img src="http://images.booksense.com/images/471/125/9780143125471.jpg" /></a>
<li><a href="/book/9780316017930"><img src="http://images.booksense.com/images/930/017/9780316017930.jpg" /></a>
<li><a href="/book/9780307408877"><img src="http://images.booksense.com/images/877/408/9780307408877.jpg" /></a>
<li><a href="/book/9781250092335"><img src="http://images.booksense.com/images/335/092/9781250092335.jpg" /></a>
<li><a href="/book/9780316322423"><img src="http://images.booksense.com/images/423/322/9780316322423.jpg" /></a>
<li><a href="/book/9780143109259"><img src="http://images.booksense.com/images/259/109/9780143109259.jpg" /></a>
<li><a href="/book/9781451659177"><img src="http://images.booksense.com/images/177/659/9781451659177.jpg" /></a>
<li><a href="/book/9780147515995"><img src="http://images.booksense.com/images/995/515/9780147515995.jpg" /></a>
</ul>
</div>
您可以使用数组并生成具有适当值的所有标记。
var isbn = '9781101987971 9780385349741 9780385542364 9781550022134 9781501132933 9780345531094 9780374280024 9780670026197 9781250069795 9780062297716 9781250075727 9781501139888 9780062300546 9780812988406 9780812993547 9781455539741 9780062363596 9781101982600 9781630060589 9780735220775',
numbers = isbn.split(' '),
div = document.createElement('div'),
ul = document.createElement('ul');
div.appendChild(ul);
document.body.appendChild(div);
numbers.forEach(function (isbn, i) {
var li = document.createElement('li'),
a = document.createElement('a'),
img = document.createElement('img');
if (i && i % 10 === 0) {
div = document.createElement('div');
div.className = 'book-cover-list';
ul = document.createElement('ul');
div.appendChild(ul);
document.body.appendChild(div);
}
img.src = 'http://images.booksense.com/images/' + isbn.slice(10, 13) + '/' + isbn.slice(7, 10) + '/' + isbn + '.jpg';
a.href = '/book/' + isbn;
a.appendChild(img);
li.appendChild(a);
ul.appendChild(li);
});
更新
我怎么能只做一个div和停止创建新的?我可以从数组中限制前4或5个数字吗?
你可以将for循环限制为你想要的第一个元素。对于div,您只能在For循环之外创建一个div。
代码片段:
var data = '9781101987971 9780385349741 9780385542364 9781550022134 9781501132933 9780345531094 9780374280024 9780670026197 9781250069795 9780062297716 9781250075727 9781501139888 9780062300546 9780812988406 9780812993547 9781455539741 9780062363596 9781101982600 9781630060589 9780735220775'.split(' ');
var eleToAppend = $('<div/>', {class: 'book-cover-list'}).append($('<ul/>'));
for(var index=0; index<5; index++) {
var val = data[index];
var newLi = $('<li/>').append($('<a/>', {href: '/book/' + val})
.append($('<img/>', {src: 'http://images.booksense.com/images/' + val.substr(val.length - 3) + '/' + val.substr(val.length - 6, 3) + '/' + val + '.jpg'})))
eleToAppend.find('ul').append(newLi);
}
$(document.body).append(eleToAppend);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
首先,我建议您使用jQuery-html-attributes构建新的dom元素,如:
$('<div/>', {class: 'book-cover-list'}).append($('<ul/>'))
你的主要步骤是:
- 使用split从一串数字创建一个数组
- 使用forEach对数组元素进行迭代
代码片段:
var data = '9781101987971 9780385349741 9780385542364 9781550022134 9781501132933 9780345531094 9780374280024 9780670026197 9781250069795 9780062297716 9781250075727 9781501139888 9780062300546 9780812988406 9780812993547 9781455539741 9780062363596 9781101982600 9781630060589 9780735220775'.split(' ');
var eleToAppend = null;
data.forEach(function(val, index) {
if ((index % 10) == 0) {
if (eleToAppend != null) {
$(document.body).append(eleToAppend);
}
eleToAppend = $('<div/>', {class: 'book-cover-list'}).append($('<ul/>'));
}
var newLi = $('<li/>').append($('<a/>', {href: '/book/' + val})
.append($('<img/>', {src: 'http://images.booksense.com/images/' + val.substr(val.length - 3) + '/' + val.substr(val.length - 6, 3)+ '/' + val + '.jpg'})))
eleToAppend.find('ul').append( newLi);
})
if (eleToAppend != null) {
$(document.body).append(eleToAppend);
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
将数字放入数组中,如下所示:
var str = "9781101987971 9780385349741 9780385542364"; // et cetera
var arr = str.split(" ");
然后使用for循环以编程方式添加元素。我建议使用document.createElement()和element.appendChild()。
您可以先将这些数字设置为数组:
["9781101987971", "9780385349741", "9780385542364"]
然后,使用循环生成所需的标记。这些3位数字可以通过substring方法(https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/String/substring)
获得使用createElement方法(https://developer.mozilla.org/en-US/docs/Web/API/Document/createElement)构建标签,并使用appendChild方法(https://developer.mozilla.org/en-US/docs/Web/API/Node/appendChild)将它们组合在一起。每10个循环,您只需在'li', 'img'和'a'标记之前创建并附加另一个包装器元素。
试着用这些概念来解决问题,如果你又卡住了,我们可以帮你理清逻辑!下面是如何实现这一点的示例:
$(document).ready(function(){
displayNumbers($(".numbers").val());
$(".numbers").change(function(){
displayNumbers($(this).val());
})
});
function displayNumbers(rawNumbers){
var numbers = rawNumbers.split(" ");
$(".output").empty();
for(i=0; i < numbers.length; i++){
$(".output").append("<li><a href='/book/" + numbers[i] + "'> img tag here with id: " + numbers[i] + " </a></li>");
}
}
.numbers {
width:100%;
height:100px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.2/jquery.min.js"></script>
<textarea class="numbers">9781101987971 9780385349741 9780385542364 9781550022134 9781501132933 9780345531094 9780374280024 9780670026197 9781250069795 9780062297716 9781250075727 9781501139888 9780062300546 9780812988406 9780812993547 9781455539741 9780062363596 9781101982600 9781630060589 9780735220775
</textarea>
<ul class="output"></ul>
由于这被标记为javascript问题,因此这里有一个快速的节点脚本,可以生成具有所需格式的output.html。将其保存到一个名为stack.js的文件中,然后在其上运行node stack.js
以在本地目录中生成output.html
。
'use strict';
const fs = require('fs');
const nums = '9781101987971 9780385349741 9780385542364 9781550022134 9781501132933 9780345531094 9780374280024 9780670026197 9781250069795 9780062297716 9781250075727 9781501139888 9780062300546 9780812988406 9780812993547 9781455539741 9780062363596 9781101982600 9781630060589 9780735220775'.split(' ');
const createList = num => {
return `
<li><a href="/book/${num}"><img src="http://images.booksense.com/images/759/034/${num}.jpg" /></a></li>
`;
}
const createSnippet = nums => {
let output = '';
for (let i=0; i < nums.length; ++i) {
if (i === 0 || i % 10 === 0) {
output += '<div class="book-cover-list"><ul>';
}
output += createList(nums[i]);
if (i === 0 || i % 10 === 9 || i === nums.length - 1) {
output += '</ul></div>';
}
}
return output;
}
fs.writeFileSync('output.html', createSnippet(nums));
- 将javascript代码转换为jquery代码时出错
- 将代码转换为可重用对象
- 将mongoose javascript代码转换为typescript.此引用丢失
- 将JQuery代码转换为等效的JavaScript代码
- 如何在AEM 6.1中使用sightly将jsp代码转换为html
- 使用键/代码转换JavaScript数组
- 将html代码转换为十六进制
- 将一些 C# 代码转换为 Javascript
- 想要将jquery代码转换为纯JavaScript或AngularJS
- 使用 ng-repeat将此 html 代码转换为角度
- 将Javascript代码转换为ReactJS
- 将python代码转换为javascript代码
- 如何将文件类型从Coldfusion代码转换为javascript代码
- 将PHP代码转换为Javascript,将数字读取为句子
- 将js代码转换为jQueryMobile时出错
- 将jQuery切换代码转换为JavaScript
- 将伪代码转换为代码
- 有没有一个工具可以将React Elements的javascript代码转换为JSX
- 将一段JavaScript代码转换为PHP
- 如何将一行咖啡脚本代码转换为多行