繁体   English   中英

如何使用javascript或jquery将参数值设置为“onClick”函数

[英]How to set parameter values to a “onClick” function using javascript or jquery

我正在尝试使用javascript参数设置为html button内的onClick事件。

这就是html按钮的样子:

<button type="button" id="upload-button" onclick="uploadFileIGCSE('param1', 'param2', 'param3')" class="btn btn-success" aria-expanded="false">Upload</button>

param1 =应该是来自id='year'name='year'html select元素的值

param2 =应该是来自id='grade'name='grade'html select元素的值

param3 =应该是来自id='subject'name='subject'html select元素的值

这些是html select options

<div class="col-md-3">
    <select id="year" name="year" class="form-control">
        <option value="select" disabled="disabled">- Select Year -</option>
        <option value="1">2001</option>
        <option value="2">2002</option>
        <option value="3">2003</option>
    </select>
</div>

<div class="col-md-3">
    <select id="grade" name="grade" class="form-control">
        <option value="select" disabled="disabled">- Select Grade -</option>
        <option value="1">Grade 5</option>
        <option value="2">Grade 6</option>
        <option value="3">Grade 7</option>
    </select>
</div>

<div class="col-md-3">
    <select id="subject" name="subject" class="form-control">
        <option value="select" disabled="disabled">- Select Subject -</option>
        <option value="1">Edexcel</option>
        <option value="2">National</option>
        <option value="3">Other</option>
    </select>
</div>

我不知道如何设置值为param1param2param3

这是我尝试过但感觉不对。

$('#upload-button').val = $('#year').val;

有人可以帮帮我吗?

我需要使用javascriptjquery在函数uploadFileIGCSE('param1', 'param2', 'param3')设置参数值(param1,param2,param3)

谢谢

我能理解你的需求。 如果你真的只想用HTML元素这样做,这就是方法。

<button type="button" id="upload-button" 
    onclick="uploadFileIGCSE(
             document.querySelector('#year').value, 
             document.querySelector('#grade').value, 
             document.querySelector('#subject').value)" 
    class="btn btn-success" aria-expanded="false">Upload</button>

这是工作示例

 function uploadFileIGCSE(val1, val2, val3){ document.querySelector('#log').innerHTML = `${val1}, ${val2}, ${val3}` } 
 <div class="col-md-3"> <select id="year" name="year" class="form-control"> <option value="select" disabled="disabled">- Select Year -</option> <option value="1">2001</option> <option value="2">2002</option> <option value="3">2003</option> </select> </div> <div class="col-md-3"> <select id="grade" name="grade" class="form-control"> <option value="select" disabled="disabled">- Select Grade -</option> <option value="1">Grade 5</option> <option value="2">Grade 6</option> <option value="3">Grade 7</option> </select> </div> <div class="col-md-3"> <select id="subject" name="subject" class="form-control"> <option value="select" disabled="disabled">- Select Subject -</option> <option value="1">Edexcel</option> <option value="2">National</option> <option value="3">Other</option> </select> </div> <button type="button" id="upload-button" onclick="uploadFileIGCSE( document.querySelector('#year').value, document.querySelector('#grade').value, document.querySelector('#subject').value)" class="btn btn-success" aria-expanded="false">Upload</button> <p>log value : (<span id="log"></span>)</p> 

你真的不应该使用像onclick这样的内联事件监听器(出于可维护性,安全性和关注点分离的原因)。

相反,使用DOM API的HTMLElement.prototype.addEventListener()添加侦听器:

document.getElementById('upload-button').addEventListener('click', function() {
  uploadFileIGCSE(year.value, grade.value, subject.value);
})

 function uploadFileIGCSE(x,y,z) { console.log(x,y,z); } document.getElementById('upload-button').addEventListener('click', function() { uploadFileIGCSE(year.value, grade.value, subject.value); }) 
 <div class="col-md-3"> <select id="year" name="year" class="form-control"> <option value="select" disabled="disabled">- Select Year -</option> <option value="1">2001</option> <option value="2">2002</option> <option value="3">2003</option> </select> </div> <div class="col-md-3"> <select id="grade" name="grade" class="form-control"> <option value="select" disabled="disabled">- Select Grade -</option> <option value="1">Grade 5</option> <option value="2">Grade 6</option> <option value="3">Grade 7</option> </select> </div> <div class="col-md-3"> <select id="subject" name="subject" class="form-control"> <option value="select" disabled="disabled">- Select Subject -</option> <option value="1">Edexcel</option> <option value="2">National</option> <option value="3">Other</option> </select> </div> <button type="button" id="upload-button">Upload</button> 

尝试这个

<button type="button" id="upload-button" onclick="getOption()" class="btn btn-success"
    aria-expanded="false">Upload</button>

function getOption() {
    var year = document.getElementById("year");
    var year_option = year.options[year.selectedIndex].value;

    var grade = document.getElementById("grade");
    var grade_option = grade.options[grade.selectedIndex].value;

    var subject = document.getElementById("subject");
    var subject_option = subject.options[subject.selectedIndex].value;

    uploadFileIGCSE(year_option, grade_option, subject_option)
}

click事件可以简单地运行匿名函数。 它唯一的输入将是DOM引擎提供的默认event对象。 然后,该函数可以从您感兴趣的各种元素中收集值,并进一步调用uploadFileIGCSE函数,将这些值作为参数传递。

这是一个演示。 请注意,我用一个不显眼的使用事件处理程序的addEventListener()的JS代码,而不是“onclick”事件在HTML中。 这通常被认为是更好的实践,因为它使代码更易于阅读,维护和调试,并有助于将功能与表示分开。

注意,您可以将jQuery用于任何/所有这些,但同样不是必需的,它在这种情况下并没有真正增加很多价值。

 var button = document.getElementById("upload-button"); button.addEventListener("click", function(event) { var year = document.getElementById("year").value; var grade = document.getElementById("grade").value; var subject = document.getElementById("subject").value; uploadFileIGCSE(year, grade, subject); }); function uploadFileIGCSE(year, grade, subject) { console.log(year, grade, subject); } 
 <button type="button" id="upload-button" onclick="uploadFileIGCSE('param1', 'param2', 'param3')" class="btn btn-success" aria-expanded="false">Upload</button> <div class="col-md-3"> <select id="year" name="year" class="form-control"> <option value="select" disabled="disabled">- Select Year -</option> <option value="1">2001</option> <option value="2">2002</option> <option value="3">2003</option> </select> </div> <div class="col-md-3"> <select id="grade" name="grade" class="form-control"> <option value="select" disabled="disabled">- Select Grade -</option> <option value="1">Grade 5</option> <option value="2">Grade 6</option> <option value="3">Grade 7</option> </select> </div> <div class="col-md-3"> <select id="subject" name="subject" class="form-control"> <option value="select" disabled="disabled">- Select Subject -</option> <option value="1">Edexcel</option> <option value="2">National</option> <option value="3">Other</option> </select> </div> 

$('#upload-button').click(function(e) {
    var year = $('#year').val();
    var grade = $('#grade').val();
    var subject = $('#subject').val();

    uploadFileIGCSE(year, grade, subject);
})

你可以尝试这样的事情。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM