предупредить значение переменной - PullRequest
26 голосов
/ 06 июня 2010

Как отобразить значение переменной в JavaScript в окне предупреждения?

Например, у меня есть переменная x = 100, и alert (x) не работает.

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

var inputs = document.getElementsByTagName('input');

var new;
for (i=0; i<inputs.length; i++) {
  if (inputs[i].getAttribute("name") == "ans") {   
new=inputs[i].getAttribute("value"));

alert(new)

  }
}

Ответы [ 6 ]

17 голосов
/ 06 июня 2010

Пара вещей:

  1. Вы не можете использовать new в качестве имени переменной, это зарезервированное слово.
  2. Для элементов input вы можете просто использовать свойство value напрямую, вам не нужно проходить через getAttribute. Атрибут «отражается» как свойство.
  3. То же самое для name.

Итак:

var inputs, input, newValue, i;

inputs = document.getElementsByTagName('input');
for (i=0; i<inputs.length; i++) {
    input = inputs[i];
    if (input.name == "ans") {   
        newValue = input.value;
        alert(newValue);
    }
}
13 голосов
/ 07 января 2016

Обратите внимание, что, хотя приведенные выше ответы верны, если вы хотите, вы можете сделать что-то вроде:

alert("The variable named x1 has value:  " + x1);
2 голосов
/ 06 июня 2010

Если вы используете greasemonkey, возможно, страница еще не готова для JavaScript. Возможно, вам придется использовать window.onReady.

var inputs;

function doThisWhenReady() {
    inputs = document.getElementsByTagName('input');

    //Other code here...
}

window.onReady = doThisWhenReady;
1 голос
/ 10 ноября 2017

Если я правильно понимаю ваш вопрос и код, то я хочу сначала упомянуть три вещи, прежде чем делиться своим кодом / версией решения. Во-первых, для name и value вам, вероятно, не следует использовать метод getAttribute(), поскольку они сами являются свойствами (именованной переменной) inputs (с заданным индексом i). Во-вторых, переменная, которую вы пытаетесь предупредить, является одним из нескольких избранных терминов в JavaScript, которые обозначены как «зарезервированные ключевые слова» или просто «зарезервированные слова». Как вы можете видеть в / в этом списке (по ссылке), new является явно зарезервированным словом в JS и никогда не должно использоваться в качестве имени переменной. Для получения дополнительной информации, просто Google "зарезервированные слова в JavaScript". В-третьих, и, наконец, в самом предупреждении вы не указали точку с запятой. Одного и того иногда бывает достаточно, чтобы ваш код не работал так, как ожидалось. [В сторону: я говорю это не как совет, а скорее как наблюдение: JavaScript почти всегда прощает и позволяет иметь слишком много и / или ненужных точек с запятой, но обычно JavaScript также одинаково, если не более, беспощаден, если / когда отсутствует (любой из ) необходимые, обязательные точки с запятой. Поэтому, наилучшей практикой, конечно, является добавление точек с запятой только во всех необходимых точках и исключение их при любых других обстоятельствах. Но практически, если вы сомневаетесь, это, вероятно, не повредит вещам, добавив / включив дополнительный, но повредит игнорированием обязательного. Общие правила - это все объявления и назначения, заканчивающиеся точкой с запятой (например, назначения переменных, оповещения, операторы console.log и т. Д.), Но большинство / все выражения этого не делают (например, для циклов, в то время как циклы, выражения функций Just Saying.] Но Я отвлекся ..

    function whenWindowIsReady() {
        var inputs = document.getElementsByTagName('input');
        var lengthOfInputs = inputs.length; // this is for optimization
        for (var i = 0; i < lengthOfInputs; i++) {
            if (inputs[i].name === "ans") {   
                var ansIsName = inputs[i].value;
                alert(ansIsName);
            }
        }
    }

    window.onReady = whenWindowIsReady();

PS: вы использовали оператор двойного присваивания в вашем условном выражении, и в этом случае это не имеет значения, поскольку вы сравниваете строки, но в целом я считаю, что оператор тройного присваивания - это путь, и он более точен проверил бы, равны ли значения ЭКВИВАЛЕНТУ БЕЗ КОНВЕРСИИ ТИПА, что может быть очень важно для других примеров сравнений, поэтому важно указать. Например, 1 == "1" и 0 == false оба имеют значение true (когда обычно требуется, чтобы они возвращали false, поскольку значение слева не совпадает со значением справа без преобразования типов), но 1 === "1" и 0 === false оба являются ложными, как и следовало ожидать, потому что тройной оператор не полагается на преобразование типов при выполнении сравнений. Имейте это в виду на будущее.

1 голос
/ 31 мая 2017

показать окно предупреждения с использованием переменной с сообщением

<script>
$(document).ready(function() {
var total = 30 ;
alert("your total is :"+ total +"rs");
});
</script>
1 голос
/ 11 июля 2016
var input_val=document.getElementById('my_variable');for (i=0; i<input_val.length; i++) {
xx = input_val[i];``
if (xx.name == "ans") {   
    new = xx.value;
    alert(new);    }}
...