JavaScript+UNIX中转义字符的问题
我试图为一个系统创建一个自定义按钮,但是浏览器总是给我错误,如果没有,按钮就不能正常工作。我怀疑我没有正确使用逃生操纵器。要么是这样,要么是我的UNIX环境干扰了正确的功能 我已经用多种方法尝试过了,并且记住错误总是一样的:uncaughtsyntaxerror:无效或意外的令牌 fileName=e.target.value.split\\\.pop;抛出错误。这应该是正确的代码,因为这正是我要做的 fileName=e.target.value.split\\\\\\.pop;不会引发错误,但会使源代码看起来像fileName=e.target.value.split\\\.pop;。这不起作用,因为我只需要一个\反斜杠 代码如下: 选择一个文件 .inputfile{ 宽度:0.1px; 高度:0.1px; 不透明度:0; 溢出:隐藏; 位置:绝对位置; z指数:-1; } .inputfile+标签{ 字号:1.25em; 字号:700; 颜色:白色; 背景色:黑色; 显示:内联块; 光标:指针; } .inputfile:焦点+标签, .inputfile+标签:悬停{ 背景色:红色; } .inputfile:焦点+标签{ 轮廓:1×000; 外形:-webkit聚焦环颜色自动5px; } 我试图做的是让自定义按钮将其innerHtml更改为用户选择的文件名 JSFIDLE只使用两个\反斜杠即可正常工作。这就是为什么我认为UNIX是可疑的-\也是一个特殊字符,表示单字符引号。所有web代码都在这个UNIX环境中运行—我们使用它编译所有内容JavaScript+UNIX中转义字符的问题,javascript,html,unix,Javascript,Html,Unix,我试图为一个系统创建一个自定义按钮,但是浏览器总是给我错误,如果没有,按钮就不能正常工作。我怀疑我没有正确使用逃生操纵器。要么是这样,要么是我的UNIX环境干扰了正确的功能 我已经用多种方法尝试过了,并且记住错误总是一样的:uncaughtsyntaxerror:无效或意外的令牌 fileName=e.target.value.split\\\.pop;抛出错误。这应该是正确的代码,因为这正是我要做的 fileName=e.target.value.split\\\\\\.pop;不会引发错误,
有什么想法或替代方案吗?在某些系统上尝试更改为“\\\”。在某些系统上尝试更改为“\\\”。使用/代替\,因为\通常用于转义字符 或者尝试使用\\\这是UNC网络路径路径/文件名 执行替换\为/使用/代替\,因为\通常用于转义字符 或者尝试使用\\\这是UNC网络路径路径/文件名
执行replace\with/我已经能够通过将javascript移出unix环境并完全重新编写函数来解决这个问题,这次使用正则表达式替换文件路径字符串: 选择一个文件 讽刺的是,这不起作用——它抛出了未捕获的引用错误:troca没有在HTMLInputElement.onchange中定义。但是,只要它对生产代码有效,对吗
感谢大家的帮助。我已经能够解决这个问题,方法是将javascript移出unix环境,并完全重新编写函数,这次使用正则表达式替换文件路径字符串: 选择一个文件 讽刺的是,这不起作用——它抛出了未捕获的引用错误:troca没有在HTMLInputElement.onchange中定义。但是,只要它对生产代码有效,对吗
谢谢大家的帮助。您应该将\/用于UNIX文件系统。您应该将\/用于UNIX文件系统。fileName=e.target.value.split\\\\\.pop;使源代码看起来像fileName=e.target.value.split\.pop;但仍然抛出了错误。我真的希望这能奏效。你看过我的答案了吗,但没有一个答案或评论对我有帮助。我的JSFIDLE按预期工作,只是不在生产代码中。是的,我也在搜索这个。奇怪的虫子。四条斜线应该有用。是的,我同意。但不知怎的,它没有,它让我发疯。fileName=e.target.value.split\\\\\.pop;使源代码看起来像fileName=e.target.value.split\.pop;但仍然抛出了错误。我真的希望这能奏效。你看过我的答案了吗,但没有一个答案或评论对我有帮助。我的JSFIDLE按预期工作,只是不在生产代码中。是的,我也在搜索这个。奇怪的虫子。四条斜线应该有用。是的,我同意。但不知怎么的,它没有,它让我发疯。
var inputs = document.querySelectorAll('.inputfile');
Array.prototype.forEach.call(inputs, function(input) {
var label = input.nextElementSibling,
labelVal = label.innerHTML;
input.addEventListener('change', function(e) {
var fileName = '';
if (this.files && this.files.length > 1)
fileName = (this.getAttribute('data-multiple-caption') || '').replace('{count}', this.files.length);
else
fileName = e.target.value.split("\\").pop();
if (fileName)
label.querySelector('span').innerHTML = fileName;
else
label.innerHTML = fileName ? fileName : labelVal;
});
});
function troca(){
var file = document.getElementById("file");
var nomeArq;
var fullPath = file.value;
if (fullPath) {
var startIndex = fullPath.indexOf('\\\\') >= 0 ? fullPath.lastIndexOf('\\\\') : fullPath.lastIndexOf('/');
var filename = fullPath.substring(startIndex);
if (filename.indexOf('\\\\') === 0 || filename.indexOf('/') === 0) {
filename = filename.substring(1);
}
nomeArq = filename;
} else {
nomeArq = 'image.jpg';
}
nomeArq = nomeArq.replace(/.*[\/\\]/, '');
var label = document.getElementById('label');
label.innerHTML = nomeArq;
}