我知道以前曾问过类似的问题,但仍然不了解我的代码正在发生什么。在用户将其序列输入到textarea中之后,我想在jQuery函数外部访问变量seq。 jquesry函数内部的console.log返回输入的序列,但是jQuery函数外部的console.log(我最终希望在其中放置其他代码来分析序列)在jquery函数之前运行并返回一个空字符串。如何使使用var seq的代码仅在单击提交按钮之后运行?谢谢!
var seq = "";
$("#subSeqType").on("click", function() {
if ($("#proteinButton").is(":checked")) {
$("#newTextArea").append("<textarea name = 'sequence' rows = '10' cols = '80' placeholder = 'Enter Protein Sequence here' > < /textarea><br>");
}
if ($("#dnaButton").is(":checked")) {
$("#newTextArea").append("<textarea name = 'sequence' rows = '10' cols = '80' placeholder = 'Enter DNA Sequence here' > < /textarea><br>");
}
$("#subSeqType").remove();
$("#newTextArea").append("<input id = 'subSeq' type='Submit'>");
$("#subSeq").on("click", function() {
seq = $("textarea:input[name=sequence]").val();
console.log(seq);
});
});
console.log("The sequence " + seq);
答案 0 :(得分:1)
我将尝试解释这一点,但是您应该阅读一些有关代码如何工作和运行的信息。
让我们声明代码声明的类型:
运行时代码是浏览器加载时运行的每一行代码
在调用代码是事件发生后将要运行的代码时运行。
统一这些概念:
创建侦听器时,创建该侦听器的规则是运行时代码。但是,该侦听器中的代码仅在需要时运行。
我举了一个小例子,您的问题不是更改变量,而是打印时。
打印机按钮将打印var值 cahnge calue将一次更改该值
希望这会有所帮助:)
let myVar = "before";
console.log(myVar);
function myFun(){
myVar = 'after';
}
function printer(){
console.log(myVar);
}
console.log(myVar);
<button onclick="myFun()">change value</button>
<button onclick="printer()">print</button>
答案 1 :(得分:0)
您似乎在另一个“ click”事件中使用了“ click”事件。 事件操作会触发并执行其操作,而不会等待内部或外部的另一个事件。
如果要在事件的某些操作后获取变量值,则需要将其分配给变量,并在事件触发并运行时起作用。