我有几个相同的HTML文件,都具有不同的名称:
3089.html
68985.html
101.html
...and more
每个文件都有一个输入字段,其ID为“ productsku”:
<input type='text' id='productsku' />
我想用HTML文件的名称填充此字段。我只想使用Javascript来做到这一点(我不想使用jQuery,因为我不想为如此小的任务而加载jQuery库)。
这是我的Javascript代码:
<script>
window.onload = function(){
document.getElementById('productsku').value=location.pathname;
}
</script>
它可以工作,但是会放置文件扩展名和路径,而不仅仅是名称。
例如它放/path/3089.html
而不是“ 3089”
有什么办法可以纠正这个问题?
这里是JS fiddle。
答案 0 :(得分:4)
怎么样:
const parts = location.pathname.split('/'); // split the pathname into parts
const [filename] = parts[parts.length - 1].split('.'); // take the filename from the last part of the path
document.getElementById('productsku').value = filename;
<input type="text" id="productsku" />
答案 1 :(得分:1)
这是可能的解决方案
let path = 'domainNameOrIPAddress/path/3089.html';
// let path = location.pathname; // Use this to get actual result
let val = path.split('/').pop().replace('.html', '');
document.getElementById('productsku').value=val;
<input type='text' id='productsku' />
答案 2 :(得分:0)
您可以使用RegEx提取它...
var path = "/this/that/other/12345.html";
console.log(path.match(/\/(\d+)\.html$/i)[1]);
答案 3 :(得分:0)
希望这对您有帮助:
const productsku = /\/([^/]+)\.html/.exec(location.pathname)[1]
document.getElementById('productsku').value=productsku;
答案 4 :(得分:0)
更好的方法是从路径中提取名称,如下所示:
<script>
window.onload = function(){
var locationName = location.pathname.substring(location.pathname.lastIndexOf('/')+1, location.pathname.lastIndexOf('.html'));
document.getElementById('productsku').value=locationName;
}
</script>