如何在Javascript中使用子例程?

时间:2018-08-02 15:31:57

标签: javascript html

我有以下代码...

<script>
    if (document.getElementById("hidden").checked === true && document.getElementById("unlisted").checked === false) {
        const currentBaseValue1 = $('#selectedBaseRelease').val();
        const currentBaseValue = currentBaseValue1+'.hidden';
        $(document).ready(function() {
            $('#baseText').empty().append(currentBaseValue);
            $('#selectedBaseRelease').on('click.select2', function(event) {
                const currentBaseValue = $('#selectedBaseRelease').val();
                $('#baseText').empty().load(currentBaseValue);
            });
            $('#baseText').empty().load(currentBaseValue);
        });
    }
</script>

在代码的其余部分中,前导if语句会有所不同,const声明也是如此。但是$(document).ready(function(){...}部分一遍又一遍地重复使用,没有改变,因此我想将其表示为一个函数/子例程,此时总代码超过400行,但是如果我可以使此函数/子例程正常工作,则可以减少到200行以下。我尝试这样做...

<script type="text/javascript">
    function loadbaseText() {
        $(document).ready(function() {
            $('#baseText').empty().append(currentBaseValue);
            $('#selectedBaseRelease').on('click.select2', function(event) {
                const currentBaseValue = $('#selectedBaseRelease').val();
                $('#baseText').empty().load(currentBaseValue);
            });
            $('#baseText').empty().load(currentBaseValue);
        });
    }
</script>

...之后,最后是...

<script>
    if (document.getElementById("hidden").checked === true && document.getElementById("unlisted").checked === false) {
        const currentBaseValue1 = $('#selectedBaseRelease').val();
        const currentBaseValue = currentBaseValue1+'.hidden';
        loadbaseText();
    }
</script>

...但是它不起作用。我是HTML / Javascript新手,所以我确定这不是一个复杂的问题,但是我似乎找不到正确的解决方案。有人可以帮忙吗?目前,我最好的猜测是const的范围在某种程度上不足。

谢谢!

1 个答案:

答案 0 :(得分:2)

只需将值用作这样的参数

function loadbaseText(value) {
        $(document).ready(function() {
            $('#baseText').empty().append(value);
            $('#selectedBaseRelease').on('click.select2', function(event) {
                const currentBaseValue = $('#selectedBaseRelease').val();
                $('#baseText').empty().load(value);
            });
            $('#baseText').empty().load(value);
        });
    }

并像这样使用它:

if (document.getElementById("hidden").checked === true && document.getElementById("unlisted").checked === false) {
        const currentBaseValue1 = $('#selectedBaseRelease').val();
        const currentBaseValue = currentBaseValue1+'.hidden';
        loadbaseText(currentBaseValue);
    }