Userscript,vk bot ввод значений в chat input
Пишу vk бота,нужно вписать в chat input число '5000'.
var sr = document.getElementById('im_editable2000000017');
sr.setAttribute="5000"
Выдавало ошибку
Cannot set property 'setAttribute' of null
Не сколько раз обновлял страницу и заметил что id textboxa меняется. Пробовал
var sr = document.getElementById('im_editable2000000017',im_editable0);
sr.setAttribute="5000"
Больше ошибок нету но значение так и не устанавливается в textbox. Возможно ли вообще такое решение?Если да то в чем ошибка? Только учу js.Заранее спасибо. Мой код полностью:
// ==UserScript==
// @name script
// @namespace http://tampermonkey.net/
// @version 0.1
// @description try to take over the world!
// @author You
// @match https://vk.com/im?sel=c17
// @grant none
// ==/UserScript==
(function() {
function inp() {
var sr = document.getElementById('im_editable2000000017');
sr.value = "5000"; // Записываем значение в input
}
inp();
})();
<div class="im_editable im-chat-input--text _im_text" tabindex="0" contenteditable="true" id="im_editable200000001754" role="textbox" aria-multiline="true"></div>
<div class="composer_wdd clear_fix wdd_toup" id="im_editable200000001790" style="">
<div class="wdd_lwrap" style="display: none; width: auto;">
<div class="wdd_list"></div>
</div><input type="hidden" id="'im_editable2000000017'" value="false">
<input type="hidden" id="im_editable200000001712" value="false">
</div>
<script language="JavaScript">
var sr = document.getElementById('im_editable200000001712');
sr.value = "5000"; // Записываем значение в input
</script>
Ответы (2 шт):
Если Вы хотите задать именно атрибут, то надо сначала задать ему имя:
var sr = document.getElementById('im_editable2000000017');
sr.setAttribute('Blink', "5000"); // Записываем значение аттрибута. console.log(document.getElementById('im_editable2000000017').getAttribute("Blink")); // Получаем значение аттрибута
<input id="im_editable2000000017">
Если хотите именно вписать в input значение, то надо делать по-другому.
var sr = document.getElementById('im_editable2000000017');
sr.value = "5000"; // Записываем значение в input
<input id="im_editable2000000017">
<script language="JavaScript">
var sr = document.getElementById('im_editable2000000017');
sr.value = "5000"; // Записываем значение в input
</script>
Пример с аттрибутом.
window.onload = function () {
var sr = document.getElementById('im_editable200000001712');
sr.setAttribute('type', ""); // изменить аттрибут
//sr.removeAttribute('type'); // или удалить аттрибут
sr.value = "5000";
};
<div class="im_editable im-chat-input--text _im_text" tabindex="0" contenteditable="true" id="im_editable200000001754" role="textbox" aria-multiline="true"></div>
<div class="composer_wdd clear_fix wdd_toup" id="im_editable200000001790" style="">
<div class="wdd_lwrap" style="display: none; width: auto;">
<div class="wdd_list"></div>
</div><input type="hidden" id="'im_editable2000000017'" value="false">
<input type="hidden" id="im_editable200000001712" value="false">
</div>
Я конечно не уверен, но может у вас скрипт tampermonkey отрабатывает быстрее чем загружается html? Попробуйте в верху к своим директивам добавить ещё одну: // @run-at document-end. А весь ваш код поместите сюда:
window.addEventListener('load', () => {
// Ваш код
});
При этом убрав самовызывающуюся функцию