2014-12-19 81 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」);應該可以解決你的問題。 如果問題沒有解決,讓我們知道完整的堆棧跟蹤。

相關問題