我正在尝试进行for循环,但我的计算机返回以下内容:无法读取null的属性“length”

时间:2017-11-10 21:02:57

标签: javascript html

这是我的for循环:

    function ubbify(){
    var inputTextStr = document.getElementById("mytext".value);
        // write the logic for ubbify
        //document.getElementById("demo").innerHTML = inputTextStr;
        for (var i = 0; i < inputTextStr.length(); i++) {
            console.log("Character: " + inputTextStr[i]);
            document.write(inputTextStr[i]);
            console.log(i);}

这是我的HTML:

    <form>
        Enter text here:
        <br>
        <input type="text" name="my-text">
        <button type="button" onclick="ubbify('my-
    text'.toString().value)">Submit</button>

我正在尝试创建一个字符串,而不是一个数组。在控制台上它返回:无法返回null的属性'length'。我不确定这意味着什么。请帮忙!

2 个答案:

答案 0 :(得分:3)

因为document.getElementById(&#34; mytext&#34; .value)返回null,这是因为DOM中没有ID等于&#34; mytext&#34;的元素。值。

我想你想要

var inputTextStr = document.getElementById("my-text").value;

答案 1 :(得分:1)

您需要将该属性放在方法之外(并使用my-test作为字符串):

var inputTextStr = document.getElementById("my-text").value;
//                                                 ^

除了使用lenght属性之外,我建议在ubbify函数的调用中使用if,因为它允许在函数内部使用它进行进一步处理。输入需要id属性。

&#13;
&#13;
function ubbify(id) {
    var inputTextStr = document.getElementById(id).value;
    for (var i = 0; i < inputTextStr.length; i++) {
        console.log("Character: " + inputTextStr[i]);
    }
}
&#13;
<form>
    Enter text here: <br>
    <input type="text" id="my-text"> <button type="button" onclick="ubbify('my-text')">Submit</button>
</form>
&#13;
&#13;
&#13;