1

好吧,我有一些 id='0','1','2','3' 等的复选框。所以我需要获取复选框的文本。这是PHP中复选框的代码。

'<input id="'.$i.'"type="checkbox" name="option1" value="a1" onclick="checkYears()">'.$years[$i].'</input>

所以我需要得到 $years[$i]-value。我正在使用这段代码。

while (bool==false)
    {
        if (document.getElementById(i)!=null)
        {
            if (document.getElementById(i).checked)
            {
                years.push(1);
                yearsValue.push(document.getElementById(i).innerHTML);
                document.getElementById(i).innerText="WORKS";
                console.log(yearsValue[i]);
            }
            else
            {
                years.push(0);
                yearsValue.push(document.getElementById(i)).innerHTML);
                console.log(yearsValue[i]);
            }
        }
        else 
        {
            bool=true;
        }
        i++;
    }

添加 0 和 1 可以,但是当我尝试使用 innerHTML 时,控制台中有未定义的值。

有什么建议么?

4

5 回答 5

6

InnerHTML 获取元素的 HTML内容。即开始标签和结束标签之间的数据。输入是空元素,它们不能有内容(在 HTML(与 XHTML 相对)中它们也不能有结束标记)。您的 HTML 无效,您应该使用验证器

你可能想要这样的东西:

<label>
    <input type="checkbox">
    <span>Text label</span>
</label>

然后你可以得到:

checkbox.parentNode.innerHTML;

或者

checkbox.parentNode.getElementsByTagName('span')[0].innerHTML
于 2012-04-13T15:00:10.897 回答
0

输入元素没有 innerhtml,因为该元素应该是自闭合的:

<input type="checkbox" name="checkbox" value="1" />

于 2012-04-13T14:58:20.583 回答
0

你不能因为<input>没有关闭标签,所以它没有innerHTML属性:

必须有开始标签,不能有结束标签。

来自MDN

我建议您使用标签和输入的组合。

于 2012-04-13T14:58:48.773 回答
0

理想情况下,输入元素不会有任何 innerHTML。这意味着您不能在输入元素中包含封闭的 html 内容。你可以只拥有输入元素的值。

于 2012-04-13T14:58:59.447 回答
0

正如所指出的,输入元素是自闭合的并且没有innerHTML。如果您想捕捉复选框元素旁边的纯文本,最好的解决方案是使用“nextElementSibling”和“innerText”。

<input type="checkbox" id="checkbox1"> <span>Text to get...</span>
<button onclick="getText()">Get Text</button>

JavaScript:

function getText() {
     console.log(document.getElementById("checkbox1").nextElementSibling.innerText);
}
于 2019-10-18T08:48:32.170 回答