在文本区域中输入isbn的列表,javascript打开每个输入的亚马逊搜索。
Isbn可以在10或13位数之间。 并非所有isbn搜索都以isbn开头,有时可能会有前面的信息,例如" isbn10:0195433831"所以你不能从头开始计算。
例如,这是典型的搜索:
0195433831好
0195433831差
0195433831优秀
问题
通常情况下,isbn以不同的格式输入,例如:
1)数字之间的间距
978 0 132 76682 1喜欢新
978 0 495 38500 4非常好
2)添加额外的评级编号,创建额外的不必要的 搜索。
9781118624616 9/10条件,突出显示最少
9780415462020 10/10条件,全新
所以我必须找到让Javascript过滤掉这些条件的方法。
代码在这里:
//the input box.
var input = document.getElementById('numbers');
//adding an event listener for change on the input box
input.addEventListener('input', handler, false);
//function that runs when the change event is emitted
function handler () {
var items = input.value.replace(/\r?\n/g, ' ').split(' ');
length = items.length;
console.log('your collection', items);
for (var i = 0; i < length; i++) {
if ( items[i] && !isNaN(items[i]) ) {
console.log('opening page for isbn ', items[i])
openPage(items[i]);
}
}
}
//opens the tab for one isbn number
function openPage (isbn) {
var base = 'https://www.amazon.com/gp/search/ref=sr_adv_b/?search-alias=stripbooks&field-isbn='
window.open(base + isbn)
}
&#13;
<p>... note, after paste you may need to click outside the text area or tab out to fire the change event.</p>
<textarea id=numbers placeholder="paste isbn numbers as csv here">
</textarea>
&#13;
答案 0 :(得分:0)
如果我没记错的话,ISBN应该是13个数字,那么你不能只删除空白并匹配13个组吗?
var str = "978 111 862 4616 9/10 condition with minimal highlighting\n\n9780415462020 10/10 condition, brand new",
nums = str.replace(/\s/,"").match(/\d{13}/g);