我写了这段代码,但是我不确定为什么它不起作用?它应该采用人员名称,并且根据他们选择的内容,将在其末尾输出一个带有其名称的网站。

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/

10-06 04:31
查看更多