23

这是我的 div:

<div id="demo" align="center"  value="1">
    <h3>By Color</h3>
    <input type="radio" name="group1" id="color1" value="#990000"  onClick="changeColor()"/><label for="color1">Red</label>
    <input type="radio" name="group1" id="color2" value="#009900" onClick="changeColor()"/><label for="color2">Green</label>
    <input type="radio" name="group1" id="color3" value="#FFFF00" onClick="changeColor()" /><label for="color3">Yellow</label><br><br><br>
</div>

我想要那个 div 的 value 属性(value="1")。

我正在尝试这样:

function overlay()
{
    var cookieValue = document.getElementById("demo").value;    
    alert(cookieValue);
}

但它显示“未定义”如何使用 javascript 获取值 1 请提出任何解决方案。

4

6 回答 6

34

DIVs 没有value 属性

从技术上讲,根据 DTD,它们也不应该有value 属性,但通常你会希望.getAttribute()在这种情况下使用:

function overlay()
{
    var cookieValue = document.getElementById('demo').getAttribute('value');
    alert(cookieValue);
}
于 2012-06-28T05:32:23.217 回答
21

简而言之,“值”不是 div 的有效属性。所以返回 undefined 是绝对正确的。

你可以做的是使用 HTML5 属性之一'data-*'

<div id="demo" align="center"  data-value="1">

脚本将是:

var val = document.getElementById('demo').getAttribute('data-value');

这应该适用于大多数现代浏览器只需记住将您的文档类型设置为<!DOCTYPE html>使其有效

于 2012-06-28T05:29:18.777 回答
5

正如我在评论中所说,<div>元素没有value属性。虽然(非常)糟糕,但可以通过以下方式访问它:

console.log(document.getElementById('demo').getAttribute);

我建议使用 HTML5data-*属性。像这样的东西:

<div id="demo" data-myValue="1">...</div>

在这种情况下,您可以使用以下方式访问它:

element.getAttribute('data-myValue');
//Or using jQuery:
$('#demo').data('myValue');
于 2012-06-28T05:32:32.783 回答
3

首先

<div id="demo" align="center"  value="1"></div>

那不是有效的 HTML。阅读自定义数据属性或使用以下内容:

<div id="demo" align="center" data-value="1"></div>

由于“数据值”是一个属性,因此您必须使用getAttribute 函数来检索其值。

var cookieValue = document.getElementById("demo").getAttribute("data-value"); 
于 2012-06-28T05:34:01.487 回答
2

你可以试试这个:

var theValue = document.getElementById("demo").getAttribute("value");
于 2012-06-28T05:30:25.353 回答
0

值不是 DIV 的有效属性

尝试这个

var divElement = document.getElementById('demo');
alert( divElement .getAttribute('value'));
于 2012-06-28T05:29:11.480 回答