Конфликт между document.getElementById()
Здравствуйте уважаемые форумчане =)
Помогите пожалуйста ;) Есть код: var tmp_linkpricelow = Array; var linklabel = Array; var n = 1; tmp_linkpricelow[n] = document.getElementById("linkpricelow" + n); tmp_linkpricelow[n].placeholder = (localStorage["linkpricelow" + n] == ('' || 0)) ? '' : localStorage["linkpricelow" + n]; console.log("1.pricelowholder =" + tmp_linkpricelow[n].placeholder); linklabel[n] = document.getElementById("linklabel" + n); linklabel[n].innerHTML = (localStorage["linkname" + n] == '') ? 'nope' : "<a href=\"" + localStorage["link" + n] + "\"target=\"_blank\">" + localStorage["linkname" + n] + "</a>"; console.log("2.pricelowholder =" + tmp_linkpricelow[n].placeholder); Есть html: <div class="form__row form__row_msg-list"> <div class="form__row__label label_yes"> <label for="interface" id="linklabel1">link 1</label> </div> <div class="form__row__widget"> <div> <input class="info" value="" placeholder="steam link" id="link1" size="45"> </div> </div> <div><input class="info" value="" id="linkpricelow1" size="1"></div> </div> localStorage - переменная расширения в Google Chrome Вопрос: почему в консоль вывод правильный работает только если отключить строку: linklabel[n] = document.getElementById("linklabel" + n); Кто объяснит такое странное явление? Спасибо заранее |
aH6y,
Цитата:
т.е во многих браузерах по умолчанию: linklabel == document.getElementById("linklabel") Поэтому лучше не создавать подобные идентичные глобальные переменные а работать с ними locale , в замыкающей функции <div id="aaa">111222</div> <script type="text/javascript"> alert(aaa == document.getElementById("aaa")) alert(aaa.innerHTML) </script> <script type="text/javascript"> (function(){ var aaa =1; alert(aaa == document.getElementById("aaa")) alert(aaa.innerHTML) }()) </script> |
А если нужно вынести эту переменную в другую функцию, то как?
Создать глобальную переменную и в нее записать содержимое linklabel? |
aH6y,
Напишите иное имя - и проблем нет My_linklabel или создать глобальный объект и плодите в нём сколько пожелаете My = {} My.linklabel=[]; My.blaBlaBla=... My.tryams = ... |
Проблема в неправильном объявлении переменных. Вместо
var tmp_linkpricelow = Array; var linklabel = Array; Нужно писать так: var tmp_linkpricelow = new Array(); var linklabel = new Array(); Всем спасибо ;) |
не за что
var tmp_linkpricelow, linklabel = []; |
Часовой пояс GMT +3, время: 17:13. |