2015-04-28 2 views
1

этой строки коды:SetAttribute() не работает так, как я ожидаю, что это

document.getElementById('01').getElementsByTagName("input")[0].setAttribute("value", "1"); 

работает прекрасно, когда «ввод» уже не имеет значения. но когда вход уже имеет значение, он не изменит значение. почему это?

+3

Вы пробовали .value = 1 вместо .setAttribute ("value", "1") ?? – Sushil

+0

Если бы я был сам, я бы просто сохранил элемент в var и использовал var.value = 1 вместо использования метода setAttribute. Если это не соответствует вашей общей цели, разместите часть кода вокруг вашего заявления, и мы свяжемся с вами. – Fata1Err0r

+0

@ Сушиль да, спасибо. это работает. –

ответ

9

Похоже, вы столкнулись путающая разница между свойством элемента value и атрибутом value. Это не то же самое вещи.

Дело в том, что атрибут value служит для значения по умолчанию, поэтому, если элемент уже имеет значение свойства, тогда изменение атрибута value не будет отражено в пользовательском интерфейсе.

Документация говорит this:

Использование SetAttribute(), чтобы изменить некоторые атрибуты, наиболее заметные значения в XUL, работает непоследовательно, так как атрибут определяет значение по умолчанию. Чтобы получить доступ или изменить текущие значения, вы должны использовать свойства. Например, используйте elt.value вместо elt.setAttribute ('value', val).

Так, чтобы продемонстрировать эту ситуацию считают эту небольшую демо:

document.getElementById("01").getElementsByTagName("input")[0].value = 'property set'; 
 

 
document.getElementById("01").getElementsByTagName("input")[0].setAttribute("value", "two");
<div id="01"> 
 
    <input type="text" /> 
 
</div>

В приведенном выше фрагменте кода атрибут значение действительно обновляется дорожить two, и вы можете проверить это, если вы попробуете чтобы прочитать его обратно с getAttribute('value'), однако свойство value имеет приоритет над атрибутом, поэтому позже не отображается.

1

То, что JavaScript абсолютно меняет значение тега <input>, когда тег уже имеет атрибут value. Смотрите сами здесь: http://jsfiddle.net/qg7d4m32/

+0

Согласен. Я думаю, его проблема в том, что он меняет его один раз, а затем пытается изменить его снова. В этом случае, в зависимости от того, как он вызывает функцию/событие, почему это не похоже, что он меняется. Надеюсь, он отправит нам больше кода. – Fata1Err0r

+0

ну, я вижу для себя. Я попробовал, и это не сработало. не важно что они говорят. –

+0

@zahramoradi Отправьте часть своего кода (входы, ваш javascript) для нас, чтобы мы могли правильно помочь вам. – Fata1Err0r

1

для поля ввода, если вы хотите, чтобы установить значение только потребительная стоимость

Чистый JavaScript:

document.getElementById('01').getElementsByTagName("input")[0].value = "value" 

JQuery:

$("input").val("value") 
+0

Я думаю, что он использует обычный JavaScript, а не jQuery. Тем не менее, я согласен с этим сообщением, изучаю jQuery, и вам будет намного легче. – Fata1Err0r

+0

Автор запросил решение для javascript, а это значит, что никто не должен заставлять jQuery ему. Также обратите внимание, что jQuery больше не имеет значения. – KarelG

+0

@KarelG Хотя я согласен, что никто не должен принуждать решение jQuery для простого JavaScript-вопроса, невероятно смело говорить, что jQuery больше не имеет отношения к делу ... – War10ck

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