PDA

View Full Version : مشکل این کد



jamejam123
دوشنبه 18 فروردین 1393, 23:19 عصر
سلام
به این کد یه نگا بندازید.

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>script</title>
</head>
<body>


<ul>
<li id="one">one</li>
<li id="two">two</li>
<li id="three">three</li>
<li>fore</li>
<li>five</li>
</ul>

<script type="text/javascript">
var one=document.getElementById('one');
one.innerHTML=one.nextSibling.id;
</script>

</body>
</html>


مشکل این کد کجاست چرا مقدار undefined
را چاپ میکند.

alireza_s_84
سه شنبه 19 فروردین 1393, 00:24 صبح
سلام
به این کد یه نگا بندازید.

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>script</title>
</head>
<body>


<ul>
<li id="one">one</li>
<li id="two">two</li>
<li id="three">three</li>
<li>fore</li>
<li>five</li>
</ul>

<script type="text/javascript">
var one=document.getElementById('one');
one.innerHTML=one.nextSibling.id;
</script>

</body>
</html>


مشکل این کد کجاست چرا مقدار undefined
را چاپ میکند.

کد شما مشکلی نداره بلکه مشکل از رفتار مرورگرهاست!!! مرورگرهایی مثل فایرفاکس و کروم همیشه "فاصله خالی" و "خط خالی" رو یک node حساب میکنن و این باعث میشه که شما این خطا رو دریافت کنید. برای اینکه فاصله یا خط توی کار شما تاثیری نذاره میتونید از یک تابع به شکل زیر استفاده کنید:
<script type="text/javascript"> var one = document.getElementById('one');
one.innerHTML = get_nextsibling(one).id;


function get_nextsibling(n) {
x = n.nextSibling;
while (x.nodeType != 1) {
x = x.nextSibling;
}
return x;
}
</script>

نکته: این مشکل توی IE وجود نداره.