Получить значение радио кнопки в текстовой области с Javascript [дубликат]

Это одно из мест, с помощью которого привязка данных, используемая во многих новых фреймворках JavaScript, будет очень полезна для вас ...

Итак, если вы используете Angular, React или любые другие фреймворки, которые делают два способа связывания данных, эта проблема просто исправлена ​​для вас, поэтому простым языком ваш результат undefined на первом этапе, поэтому вы получили result = undefined до получения данных, а затем, как только вы получите результат , он будет обновляться и присваиваться новому значению, которое отвечает на ваш вызов Ajax ...

Но как вы можете сделать это в чистом javascript или jQuery, например, как вы задали этот вопрос?

Вы можете использовать обратный вызов, обещание и недавно наблюдаемое, чтобы обрабатывать его для вас, например, в обещаниях мы имеем некоторые функции, такие как success () или then (), которые будут выполняться, когда ваши данные будут готовы для вас, с функцией обратного вызова или подписки на наблюдаемые.

Например, в вашем случае, в котором вы используете jQuery, вы можете сделать что-то вроде этого:

$(document).ready(function(){
    function foo() {
        $.ajax({url: "api/data", success: function(data){
            fooDone(data); //after we have data, we pass it to fooDone
        }});
    };

    function fooDone(data) {
        console.log(data); //fooDone has the data and console.log it
    };

    foo(); //call happens here
});

Для получения дополнительной информации n изучение обещаний и наблюдаемых, которые являются новыми способами для создания асинхронных материалов.

268
задан AstroCB 20 March 2015 в 22:40
поделиться

9 ответов

document.getElementById("myspan").innerHTML="newtext";

EDIT Для современных браузеров:

document.getElementById("myspan").textContent="newtext";
452
ответ дан Gregoire 28 August 2018 в 21:36
поделиться

Для этого диапазона

<span id="name">sdfsdf</span>

Вы можете пойти так: -

$("name").firstChild.nodeValue = "Hello" + "World";
-1
ответ дан Dhiraj Himani 28 August 2018 в 21:36
поделиться

Как и в другом ответе, innerHTML и innerText не рекомендуется, лучше использовать textContent . Этот атрибут хорошо поддерживается, вы можете это проверить: http://caniuse.com/#search=textContent

0
ответ дан Hazlo8 28 August 2018 в 21:36
поделиться
document.getElementById("myspan").textContent="newtext";

это выберет dom-узел с id myspan и изменит его текстовое содержимое на new text

0
ответ дан Jimi Pajala 28 August 2018 в 21:36
поделиться

Использование innerHTML НЕ РЕКОМЕНДУЕТСЯ. Вместо этого вы должны создать textNode. Таким образом, вы «привязываете» свой текст, и вы, по крайней мере, в этом случае не уязвимы для атаки XSS.

document.getElementById("myspan").innerHTML = "sometext"; //INSECURE!!

Правильный путь:

span = document.getElementById("myspan");
txt = document.createTextNode("your cool text");
span.appendChild(txt);

Дополнительные сведения об этой уязвимости: Скрипт кросс-сайта (XSS) - OWASP

Отредактировано ноябрь 4th 2017:

Изменена третья строка кода в соответствии с @mumush предложение: «использовать appendChild () вместо». Кстати, согласно @Jimbo Jonny Я думаю, что все должно рассматриваться как пользовательский ввод, применяя принцип безопасности по слоям. Таким образом, вы не встретите сюрпризов.

55
ответ дан nicooo. 28 August 2018 в 21:36
поделиться
document.getElementById('myspan').innerHTML = 'newtext';
29
ответ дан Nightfirecat 28 August 2018 в 21:36
поделиться

Я использую Jquery, и ни одно из приведенных выше не помогло, я не знаю, почему, но это сработало:

 $("#span_id").text("new_value");
10
ответ дан shellbye 28 August 2018 в 21:36
поделиться

Вот еще один способ:

var myspan = document.getElementById('myspan');

if (myspan.innerText) {
    myspan.innerText = "newtext";
}
else
if (myspan.textContent) {
        myspan.textContent = "newtext";   
}

Свойство innerText будет обнаружено Safari, Google Chrome и MSIE. Для Firefox стандартным способом делать вещи было использование textContent, но с версии 45 он тоже имеет свойство innerText, так как кто-то любезно сообщил мне недавно. Это решение проверяет, поддерживает ли браузер одно из этих свойств, и если это так, назначает «новый текст».

Live demo: здесь

6
ответ дан slevy1 28 August 2018 в 21:36
поделиться

EDIT: Это было написано в 2014 году. Вероятно, вы больше не заботитесь о IE8 и можете забыть об использовании innerText. Просто используйте textContent и делайте с ним, hooray.

Если вы тот, кто снабжает текст, и никакая часть текста не предоставляется пользователем (или другим источником, который вы не контролируете ), тогда установка innerHTML может быть приемлемой:

// * Fine for hardcoded text strings like this one or strings you otherwise 
//   control.
// * Not OK for user-supplied input or strings you don't control unless
//   you know what you are doing and have sanitized the string first.
document.getElementById('myspan').innerHTML = 'newtext';

Однако, как отмечают другие, если вы не являетесь источником какой-либо части текстовой строки, использование innerHTML может подвергать вас контенту инъекции, такие как XSS, если вы не будете осторожны, чтобы правильно дезинфицировать текст.

Если вы используете ввод от пользователя, вот один из способов сделать это безопасно, одновременно поддерживая совместимость между браузерами: / g3]

var span = document.getElementById('myspan');
span.innerText = span.textContent = 'newtext';

Firefox не поддерживает innerText, а IE8 не поддерживает textContent, поэтому вам нужно использовать оба варианта, если вы хотите поддерживать совместимость между браузерами.

И если вы хотите избежать переплавов (вызванных innerText), где это возможно:

var span = document.getElementById('myspan');
if ('textContent' in span) {
    span.textContent = 'newtext';
} else {
    span.innerText = 'newtext';
}
19
ответ дан Trott 28 August 2018 в 21:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: