如何在Javascript中使用子例程?
我有以下代码如何在Javascript中使用子例程?,javascript,html,Javascript,Html,我有以下代码 <script> if (document.getElementById("hidden").checked === true && document.getElementById("unlisted").checked === false) { const currentBaseValue1 = $('#selectedBaseRelease').val(); const currentBaseValue = c
<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(document.getElementById(“隐藏”).checked==true和document.getElementById(“未列出”).checked==false){
const currentBaseValue1=$(“#selectedBaseRelease”).val();
const currentBaseValue=currentBaseValue1+'.hidden';
$(文档).ready(函数(){
$('#baseText').empty().append(currentBaseValue);
$('selectedBaseRelease')。在('click.select2',函数(事件){
const currentBaseValue=$('#selectedBaseRelease').val();
$('#baseText').empty().load(currentBaseValue);
});
$('#baseText').empty().load(currentBaseValue);
});
}
在代码的其余部分,前导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>
函数loadbaseText(){
$(文档).ready(函数(){
$('#baseText').empty().append(currentBaseValue);
$('selectedBaseRelease')。在('click.select2',函数(事件){
const currentBaseValue=$('#selectedBaseRelease').val();
$('#baseText').empty().load(currentBaseValue);
});
$('#baseText').empty().load(currentBaseValue);
});
}
…之后,最终
<script>
if (document.getElementById("hidden").checked === true && document.getElementById("unlisted").checked === false) {
const currentBaseValue1 = $('#selectedBaseRelease').val();
const currentBaseValue = currentBaseValue1+'.hidden';
loadbaseText();
}
</script>
if(document.getElementById(“隐藏”).checked==true和document.getElementById(“未列出”).checked==false){
const currentBaseValue1=$(“#selectedBaseRelease”).val();
const currentBaseValue=currentBaseValue1+'.hidden';
loadbaseText();
}
…但它不起作用。我是一名HTML/Javascript新手,因此我确信这不是一个复杂的问题,但我似乎找不到正确的解决方案。有人能帮忙吗?目前我最好的猜测是const的范围在某种程度上是不够的
谢谢!只需像这样使用该值作为参数
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);
}
只需将该值用作如下参数
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);
}
确实调用了该函数吗?console.log是您的朋友尝试将
currentBaseValue1
和currentBaseValue1
传递给您的loadBaseText()
function as arguments.loadBasetext设置一个事件处理程序,然后退出-调用loadBasetext不会执行处理程序中定义的代码-这只会在页面完成加载时发生一次。我认为您要做的是在document.ready外部定义一个函数,从document.ready内部调用该函数,并调用该函数ame函数elsewhere@James,虽然您没有错,没有必要将其全部包含在内,但如果当前满足条件,则会立即调用回调。@OliverRadini,这是不正确的。.ready()如果DOM已经加载,则
将立即调用其回调函数。是否确实调用了该函数?console.log是您的朋友尝试将currentBaseValue1
和currentBaseValue1
传递给您的loadBaseText()
function as arguments.loadBasetext设置一个事件处理程序,然后退出-调用loadBasetext不会执行处理程序中定义的代码-这只会在页面完成加载时发生一次。我认为您要做的是在document.ready外部定义一个函数,从document.ready内部调用该函数,并调用该函数ame函数elsewhere@James,虽然您没有错,没有必要将其全部包含在内,但如果当前满足条件,则会立即调用回调。@OliverRadini,这是不正确的。.ready()
将在DOM已加载时立即调用其回调。