Javascript函数参数不起作用

标签 javascript

在我的 html 表单中,我有 4 个文件输入字段。

<input type="file" id="one" name="Title_image1" onchange="check_extension(one)"/>
<input type="file" id="one2" name="Title_image2" onchange="check_extension(one3)"/>
<input type="file" id="one3" name="Title_image3" onchange="check_extension(one4)"/>
<input type="file" id="one4" name="Title_image4" onchange="check_extension(one5)"/>

我想使用 JavaScript 检查输入的文件扩展名。

我的功能

function check_extension($field_id)
{
    var allowed = {'jpg': 1, 'png': 1};
    var fileinput = document.getElementById("$field_id");

    var y = fileinput.value.split(".");
    var ext = y[(y.length) - 1];
    ext = ext.toLowerCase();

    if (allowed[ext]) {
        document.chooseF.confirm.disabled = false;
        return true;
    } else {
        alert("This is an unsupported file type. Supported files are: jpg,png");
        document.chooseF.confirm.disabled = true;
        return false;
    }
}

我对所有以 fieldid 作为参数的输入字段使用相同的函数,但它不起作用。

最佳答案

  • onchange="check_extension(one)"

    这里one是id为“one”的节点one不是字符串“one”

  • document.getElementById("$field_id");

    即使 $field_id 是 ID "one""$field_id" 也是不同的字符串
    因此 getElementById("$field_id") 将为您提供 id 为 "$field_id" 的节点,而不是 id 为 "one" 的节点。

修复

onchange="check_extension('one')"

document.getElementById($field_id)

此外,我不鼓励使用前导 $ 命名字符串变量

关于Javascript函数参数不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25714173/

相关文章:

javascript - 如何将 angular-ui modal templateURL 与 Node/快速路由一起使用

javascript - 两个输入之间的计算和另一个结果

javascript - 递归函数中的for循环

javascript - 我似乎无法通过 JavaScript 更改类值

javascript - 理解 HTML 中的 Jquery

javascript - Angular JQuery Datepicker 未在加载时设置 MinDate

javascript - 是否有 Javascript 或 Jquery 脚本可以模拟 Stack Overflow 的 flash 消息(顶部的橙色条)?

javascript - Angular ng-repeat 不适用于从 mongodb 获取的数据

javascript - 为句子及其子集设计正则表达式

javascript - 在另一个方法内部调用时,函数返回空数组而不是参数对象