2011-01-20 2 views
0

Я создал код, который будет работать так же, как и facebook, добавить друзей для отправки списка сообщений (подано в:). Код создан в FrontPage, также он протестирован там, с ограниченными функциями, поскольку предварительный просмотр FrontPage есть, и он работает ... Затем он протестирован в IE 7 и IE 8 и даже IE 9, а также работает ... Также тестируется в FireFox, Chrome и Safari, и он также работает ...Код JavaScript не работает в некоторых браузерах

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

Информация Код:

topolje - DIV, который содержит список пользователей, и при нажатии на конкретного пользователя, это вызов функции addnewto («имени пользователя»)

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

NewOne - вход, где вы начинаете вводить имя пользователя и показывает вниз имена, которые начинаются с этого ...

getRefToDiv (id_of_element) - найти элемент по его идентификатор в разных браузерах

Вот код:

var skup = new Array(); 
var skup2 = new Array(); 

function addnewto(user) 
{ 

var i = 777777; 
var userform = ''; 
var k = 0; 
var velicina = 23; 
getRefToDiv('topolje').style.height = "23px"; 

for (j = 0; j < skup.length; j++) { 
if (skup[j] == "") { 
i = j; 
} 
else 
{ 

userform2 = '<font id="tekst' + j + '" name="tekst' + j + '" style="background: #8BBC40; border:1px solid #808080; -moz-border-radius: 3px; border-radius: 3px; padding-left:4px; padding-right:4px; padding-top:1px; padding-bottom:1px" face="Tahoma" size="2" color="#FFFFFF">' + skup2[j] + ' |<span onclick="'; 
userform2 += "this.parentNode.parentNode.removeChild(getRefToDiv('tekst" + j + "-1')); this.parentNode.parentNode.removeChild(this.parentNode); skup.splice(" + j + ",1); skup2.splice(" + j + ",1); setTimeout('getsize();', 10);;"; 
userform2 += '" style="cursor: pointer"> x </span></font><span id="tekst' + j + '-1" name="tekst' + j + '-1">&nbsp;</span>'; 


var mast = getRefToDiv('howbig'); 
var duzina = 0; 
mast.innerHTML = userform + userform2; 
duzina = mast.clientWidth; 

if (duzina > 405) { 
userform += "<br>" + userform2; 
velicina += 21; 
getRefToDiv('topolje').style.height = velicina + "px"; 
} 
else 
{ 
userform += userform2; 
} 

} 
} 

if (i = 777777) { 
i = skup.length; 
} 

skup[i] = 'tekst' + i; 
skup2[i] = user; 


userform2 = '<font id="tekst' + i + '" name="tekst' + i + '" style="background: #8BBC40; border:1px solid #808080; -moz-border-radius: 2px; border-radius: 2px; padding-left:4px; padding-right:4px; padding-top:1px; padding-bottom:1px" face="Tahoma" size="2" color="#FFFFFF">' + user + ' |<span onclick="'; 
userform2 += "this.parentNode.parentNode.removeChild(getRefToDiv('tekst" + i + "-1')); this.parentNode.parentNode.removeChild(this.parentNode); skup.splice(" + i + ",1); skup2.splice(" + i + ",1); setTimeout('getsize();', 10);"; 
userform2 += '" style="cursor: pointer"> x </span></font><span id="tekst' + i + '-1" name="tekst' + i + '-1">&nbsp;</span>'; 


var mast = getRefToDiv('howbig'); 
var duzina = 0; 
mast.innerHTML = userform + userform2; 
duzina = mast.clientWidth; 

if (duzina > 405) { 
userform += "<br>" + userform2; 
velicina += 21; 
getRefToDiv('topolje').style.height = velicina + "px"; 
} 
else 
{ 
userform += userform2; 
} 



getRefToDiv('topolje').innerHTML = userform + '<input type="text" onblur="if (this.value.length < 3) { proveri(0); } else { proveri(2); }" onfocus="if (this.value.length < 2) { proveri(1); }" onkeyup="if (this.value.length > 2) { proveri(this.value); }" style="border: 1px solid #FFFFFF; width: 10px; font-family:Verdana; font-size:10pt; color:#8BBC40;" id="newone" name="newone">'; 

reorder(); 
} 


function reorder() 
{ 

var i = 777777; 
var userform = ''; 
var userformx = ''; 
var k = 0; 
var velicina = 23; 
getRefToDiv('topolje').style.height = "23px"; 


for (j = 0; j < skup.length; j++) { 
if (skup[j] == "") { 
i = j; 
} 
else 
{ 

userform2 = '<font id="tekst' + j + '" name="tekst' + j + '" style="background: #8BBC40; border:1px solid #808080; -moz-border-radius: 3px; border-radius: 3px; padding-left:4px; padding-right:4px; padding-top:1px; padding-bottom:1px" face="Tahoma" size="2" color="#FFFFFF">' + skup2[j] + ' |<span onclick="'; 
userform2 += "this.parentNode.parentNode.removeChild(getRefToDiv('tekst" + j + "-1')); this.parentNode.parentNode.removeChild(this.parentNode); skup.splice(" + j + ",1); skup2.splice(" + j + ",1); setTimeout('getsize();', 10);;"; 
userform2 += '" style="cursor: pointer"> x </span></font><span id="tekst' + j + '-1" name="tekst' + j + '-1">&nbsp;</span>'; 


var mast = getRefToDiv('howbig'); 
var duzina = 0; 
mast.innerHTML = userform + userform2; 
duzina = mast.clientWidth; 

if (duzina > 405) { 
userform += "<br>" + userform2; 
userformx = userform2; 
velicina += 21; 
getRefToDiv('topolje').style.height = velicina + "px"; 
} 
else 
{ 
userform += userform2; 
userformx += userform2; 
} 

} 
} 

getRefToDiv('topolje').innerHTML = userform + '<input type="text" onblur="if (this.value.length < 3) { proveri(0); } else { proveri(2); }" onfocus="if (this.value.length < 2) { proveri(1); }" onkeyup="if (this.value.length > 2) { proveri(this.value); } else { proveri(1); }" style="border: 1px solid #FFFFFF; width: 10px; font-family:Verdana; font-size:10pt; color:#8BBC40;" id="newone" name="newone">'; 


var mast = getRefToDiv('howbig'); 
var duzina = 0; 

mast.innerHTML = userformx; 
duzina += mast.clientWidth; 
var duzina2 = 400 - duzina; 
getRefToDiv('newone').style.width = duzina2 + 'px'; 



} 

Я работаю над этим в течение очень долгого времени, и я не могу понять это ... Если вы нашли что-то, что может быть не так, пожалуйста, скажите мне ...

Спасибо.

+3

Шаги, чтобы решить вашу проблему: 1. Идите сюда: http://jslint.com/ 2. Вставьте свой код в поле. 3. Нажмите «Хорошие детали» ниже, затем нажмите ссылку «JSLint». 4. Плачь. 5. Затем попытайтесь исправить все проблемы. 6. Радуйся! – Stephen

+1

Даже после отключения параметра «Strict Whitespace», я догадался: «Проблема с символом линии 79 17: Слишком много ошибок (58% отсканировано)». – Stephen

+1

... поддержка на лицевой панели предназначенный? – meo

ответ

4

Я даже не знаю, как это работает в любом браузере.

Это:

if (i = 777777) { 
i = skup.length; 
} 

должен быть таким:

if (i === 777777) { 
    i = skup.length; 
} 

Это общая ошибка в коде упоминается как "Случайная уступка." То есть, если вы всегда хотите условный блок оценить верно, в этом случае вашего код эквивалентен:

i = 777777; 
i = skup.length; 

Что я уверен, что вы не имеете в виду. Я бы рекомендовал отказаться от редактора WYSIWYG в пользу хорошей среды IDE, которая указала бы на это все это (NetBeans, например, выделил эту строку для меня, как только я вставил ваш код в новый пустой файл javascript).

И это только одна проблема многих. См. Мой комментарий к вопросу о инструкциях по решению всех других проблем.

+0

Хороший улов. Чтобы ответить на ваш вопрос, он «работает», потому что результат 'i = 777777' -' 777777', который является правдивым. Хорошие инструменты для линта (JSLint, компилятор закрытия, caja linter) должны все это поймать. –

+0

@ Майк, я указал на это в следующем комментарии: «Если вы ВСЕГДА не хотите, чтобы условный блок оценивал истину ...» на «работах», я имел в виду, «делает то, что вы намереваетесь сделать». – Stephen

+0

извините. Мой риторический детектор вопроса не всегда «работает». –

0

Проблема заключается в линии 217 и линии 42

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