Javascript:将当前文件的名称插入字段?

时间:2019-11-12 13:09:46

标签: javascript

我有几个相同的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

5 个答案:

答案 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>