如何将动态变量传递给 JS 中的函数?
How can I pass a dynamic variable to function in JS?
尝试动态传递 ID 会中断函数:
<p id="email1" onclick="mailTo(this.id,'com','abc','info','My Website','I have a question for you: ')">Send us an email</p>
<p id="email2" onclick="mailTo(this.id,'org','xyz','support','My Other Website','I want to report a problem with your website.')">Report Website Problems</p>
硬编码document.querySelector('#email')
成功,但需要id是动态的。
控制台正确打印 var。
错误:qS.addEventListener is not a function.
function mailTo(idx, tld, domain, account, site, bodyText) {
let qS = `document.querySelector('#${idx}')`;
console.log(qS);
let arrEmail = [tld, domain, account, site, bodyText];
const buildEmail = arr => `${arr[2]}@${arr[1]}.${arr[0]}?subject=From%20the%20${arr[3]}%20website&body=${arr[4]}`;
qS.addEventListener("click", event => {
let str = `mailto:${buildEmail(arrEmail)}`;
location.href = str;
});
}
这对您有帮助:
function mailTo(...items)
{
console.log(items[0].id);
}
<p id="email1" onclick="mailTo(this,'com','abc','info','My Website','I have a question for you: ')">Send us an email</p>
<p id="email2" onclick="mailTo(this,'org','xyz','support','My Other Website','I want to report a problem with your website.')">Report Website Problems</p>
仅动态构建选择器参数...
let qS = document.querySelector(`#${idx}`);
如果你改变
let qS = `document.querySelector('#${idx}')`;
至
let qS = this;
您的代码有效。但是您不需要提供 id 来查询元素,因为您可以使用 this
.
访问它
尝试动态传递 ID 会中断函数:
<p id="email1" onclick="mailTo(this.id,'com','abc','info','My Website','I have a question for you: ')">Send us an email</p>
<p id="email2" onclick="mailTo(this.id,'org','xyz','support','My Other Website','I want to report a problem with your website.')">Report Website Problems</p>
硬编码document.querySelector('#email')
成功,但需要id是动态的。
控制台正确打印 var。
错误:qS.addEventListener is not a function.
function mailTo(idx, tld, domain, account, site, bodyText) {
let qS = `document.querySelector('#${idx}')`;
console.log(qS);
let arrEmail = [tld, domain, account, site, bodyText];
const buildEmail = arr => `${arr[2]}@${arr[1]}.${arr[0]}?subject=From%20the%20${arr[3]}%20website&body=${arr[4]}`;
qS.addEventListener("click", event => {
let str = `mailto:${buildEmail(arrEmail)}`;
location.href = str;
});
}
这对您有帮助:
function mailTo(...items)
{
console.log(items[0].id);
}
<p id="email1" onclick="mailTo(this,'com','abc','info','My Website','I have a question for you: ')">Send us an email</p>
<p id="email2" onclick="mailTo(this,'org','xyz','support','My Other Website','I want to report a problem with your website.')">Report Website Problems</p>
仅动态构建选择器参数...
let qS = document.querySelector(`#${idx}`);
如果你改变
let qS = `document.querySelector('#${idx}')`;
至
let qS = this;
您的代码有效。但是您不需要提供 id 来查询元素,因为您可以使用 this
.