2016-04-11 2 views
1

Я работал над простым объектом с методами для установки данных в DOM и получения данных из DOM на основе атрибута name, однако при попытке попробовать для установки данных в элемент, я не получаю никаких ошибок, но ни один элемент не назначается. Что я делаю неправильно?Невозможно присвоить значение JSON элементу на основе его имени

var $ = { 
 
    getData: function(CLASS) { 
 
    var a = document.getElementsByClassName(CLASS), 
 
     b = document.getElementsByClassName(CLASS).length, 
 
     c = {}, 
 
     d = 0; 
 
    for (d = 0; d < b; d++) { 
 
     c[a[d].getAttribute('name')] = a[d].getAttribute('value'); 
 
    } 
 
    return c; 
 
    }, 
 
    setData: function(CLASS, DATA) { 
 
    var a = document.getElementsByClassName(CLASS), 
 
     b = document.getElementsByClassName(CLASS).length, 
 
     c = DATA, 
 
     d = 0; 
 
    for (d = 0; d < b; d++) { 
 
     console.log(c[a[d].getAttribute('name')]); 
 
     a[d].value = c[a[d].getAttribute('name')]; 
 
    } 
 
    return c; 
 
    } 
 
}; 
 
var c = { 
 
    "roger0": "derp", 
 
    "roger1": "derp", 
 
    "roger2": "derp", 
 
    "roger3": "derp", 
 
    "roger4": "derp" 
 
}; 
 

 
$.setData('item', c); 
 

 
console.log($.getData('item'));
<!DOCTYPE html> 
 
<html> 
 

 
<head> 
 
    <title>Form</title> 
 
</head> 
 

 
<body> 
 
    <div class="item" name="roger0" value="">0</div> 
 
    <div class="item" name="roger1" value="">1</div> 
 
    <div class="item" name="roger2" value="">2</div> 
 
    <div class="item" name="roger3" value="">3</div> 
 
    <div class="item" name="roger4" value="">4</div> 
 
</body> 
 

 
</html>

+0

Просто примечание: имена дескриптивной переменной действительно полезны при отладке. [Этот код делает то же самое, но с лучшими именами переменных.] (Https://jsfiddle.net/b0ku7gh9/) Ваша фактическая проблема связана с тем, как вы получаете значение элементов. –

+0

Возможный дубликат [JavaScript Element.value vs Element.getAttribute («значение»)] (http://stackoverflow.com/questions/17494432/javascript-element-value-vs-element-getattributevalue) –

ответ

1

Вы должны изменить функцию УстановитьДанные использовать метод getAttribute путем редактирования текущей функции. Для установки значения используется нижняя строка.

a[d].setAttribute("value",c[a[d].getAttribute('name')]);

Вы можете найти дополнительную информацию о setAttribute()here.

setData: function(CLASS, DATA) { 
     var a = document.getElementsByClassName(CLASS), 
     b = document.getElementsByClassName(CLASS).length, 
     c = DATA, 
     d = 0; 
     for (d = 0; d < b; d++) { 
      console.log(c[a[d].getAttribute('name')]); 
      console.log(a[d]) 
      a[d].setAttribute("value",c[a[d].getAttribute('name')]); 
     } 
     return c; 
} 
+1

О, это странно, спасибо, что помогли мне +1 – Kyle

Смежные вопросы