我写了这段代码,但是我不确定为什么它不起作用?它应该采用人员名称,并且根据他们选择的内容,将在其末尾输出一个带有其名称的网站。
JSFiddle
http://jsfiddle.net/tQyvp/135/
的JavaScript
function generateDynamicSignature() {
var dynSig = "";
var user = document.getElementById("usernameInput");
var e = document.getElementById("scriptListInput");
var strUser = e.options[e.selectedIndex].text;
if (strUser == "example") {
dynSig = "http://example.com/users/";
}
document.getElementById("generateSignature").addEventListener('click', function () {
var text = document.getElementById('dynamicSignatureOutput');
text.text = (dynSig + user);
});
}
的HTML
<select class="form-control" id="scriptListInput">
<option value="example">Example 1</option>
</select>
最佳答案
您的代码有一些问题,我将尝试列出所有问题。
首先,您从未将用户名输入添加到HTML中。
接下来,您似乎对访问/设置HTML输入文本的方式感到困惑。您可以通过value
字段执行此操作。对于用户名输入,您忘记了访问任何属性,因此需要将其更改为:
var user = document.getElementById("usernameInput").value;
以后,您使用了select元素和输出的
text
属性。这些也都应为value
。另一个问题是您已将侦听器放置在侦听器内部。您的外部函数
generateDynamicSignature
侦听按钮的onclick事件。该功能仅在单击按钮后运行。但是在此函数内部,您将附加一个新的侦听器。仅当有人单击按钮两次时,此内部侦听器才会运行。我在新的小提琴中包含了这些更改:
https://jsfiddle.net/zdfnk77u/