2014-12-19 82 views
1

我想获得alert(name)的div名称,但它给出了“未定义”。这些值来自数据库。所有其他警报工作正常。如何在javaScript中获取div名称?

这是我的HTML代码。

<input class="rating form-control input-star-rate" id="<?php echo $rateid; ?>" name="<?php echo $arate_num; ?>" value="<?php echo $ratea; ?>" data-min="0" data-max="5" data-step="0.3" data-size="xs" style="display: none; text-align: center;" onchange="changeRate(this)"/> 

这是我的javaScript代码。

function changeRate(id) { 
    var ratingValue = id.value; 
    var ratingValue2 = parseFloat(ratingValue); 
    alert(ratingValue2); 

    var ratingValuePrevious = id.getAttribute('value'); 
    var ratingValuePrevious2 = parseFloat(ratingValuePrevious); 
    alert(ratingValuePrevious2); 

    var id = id.id; 
    alert(id); 

    var name = id.name; 
    alert(name); 
} 
+1

尝试'$('input')。attr('name');' – ochi 2014-12-19 06:54:44

+0

您确定您的$ arate_num变量包含一个值吗?当您按F12并检查开发人员工具中的元素时,“名称”是否有值? – user3589536 2014-12-19 06:55:14

回答

1

试试这个。

var name = id.getAttribute('name'); 
alert(name); 
2

使用的getAttribute在JavaScript

id.getAttribute("name"); 

jQuery中

$(id).attr("name"); 

注意:在你的代码,这将显示undefinedid.name所以改为id.getAttribute("name");

1

不要通过将其ID分配到相同的地方来更改原来的id variable。并尝试使用getAttribute()一样,

var myid = id.id; // don't change your original variable, use myid instead 
alert(myid); 

var name = id.getAttribute('name'); 
alert(name); 
0

如果ID为正确的警报,那么问题只在你覆盖ID是id.id.使用不同的变量名称作为你的id输入的id。

2

的问题是因为你重新分配函数内部id变量值:

function changeRate(id) { 
    // ... 
    var id = id.id; 
    // ... 
} 

id.name后未定义当然,因为id不再是HTMLInputElement对象,但只是一个字符串,它没有name财产当然。

一般来说id不是很好的DOM元素参数名称。将它命名为更好obj避免与id财产的困惑:

function changeRate(obj) { 
    var ratingValue = obj.value; 
    var ratingValue2 = parseFloat(ratingValue); 
    alert(ratingValue2); 

    var ratingValuePrevious = obj.getAttribute('value'); 
    var ratingValuePrevious2 = parseFloat(ratingValuePrevious); 
    alert(ratingValuePrevious2); 

    var id = obj.id; 
    alert(id); 

    var name = obj.name; 
    alert(name); 
} 
0

尝试下面的代码,让我知道它是否适合你。

var name = document.getElementById(id).attributes["name"].value; 
    alert(name); 
0

我不知道你是如何调用changeRate()函数,但我想如果你能看到在之前的警报(名字)写的警报正确的价值观,那么你是正确的调用它。
现在来了警报点(名称),正如上面提到的注释id.getAttribute(“name”);应该可以解决你的问题。 如果问题没有解决,让我们知道完整的堆栈跟踪。

相关问题