eval + JSON проблема для начинающего. . .
Проблема такова: Есть вот такой код
<!DOCTYPE html>
<html>
<head>
<title></title>
<meta name="" content="">
<style>
body{margin:0; padding:0; background:url(file:///C:/Users/Rail-gun/Desktop/ravens.gif);}
.tubs{border-radius:0px 0px 15px 15px; border: solid 2px #c4c6c1; background:#cfd1cd; padding-top:5px; padding-left:5px; padding-bottom:5px; padding-right:5px; margin-left:20px;width:auto; height:auto; float: left; box-shadow: 3px 3px rgba(0, 0, 0, 0.6);z-index:99;}
.textbody{display:none; background: #d7d9d5; border: solid 2px #c4c6c1; margin-top:1%;box-shadow: 3px 3px rgba(0, 0, 0, 0.7); white-space:pre-wrap;overflow: auto; top:0; left:0;}
</style>
</head>
<body>
<div align='center'>
<div id='globaltext' align="center" >
<div class="textbody" ></div>
<div class="textbody" ></div>
<div class="textbody" ></div>
<div class="textbody" ></div>
<div class="textbody" ></div></div>
<div id="menu" align="center">
<div class="tubs"><a href="#6">Главная</a></div>
<div class="tubs">Информация</div>
<div class="tubs">О Продукции</div>
<div class="tubs">Адреса</div>
<div class="tubs">Контакты</div>
</div></div>
<script>
function firstfun(){
var menuid=document.getElementById('menu');
var num=menuid.children.length;
var i=0;
while(i<num){menuid.children[i].onclick=function () {tabs('"num":"'+i+'"; "id":"globaltext"')};i++}
}
function tabs(obj){
var JSONstring='{'+obj+'}';
var JSONOBJ=eval( " ( " + obj + " ) " );
var bodyid=document.getElementById(id);
var num=bodyid.children.length;
var i=0;
while(i<num){bodyid.children[i].style.display="none";i++}
bodyid.children[funobj.num].style.display="block";
bodyid.children[element].style.height=screen.height-((screen.height/100)*3)-155+'px';
bodyid.children[element].style.width=screen.width-35+'px';
}
function seturl(){
var a=document.getElementsByTagName("a");
var num=a.length;
var i=0;
while(i<num){var ahref=a[i].href; a[i].onclick=function(){openframe(ahref)}; a[i].removeAttribute('href');i++;}
}
function openframe(ahref){
alert(ahref);
}
firstfun();
seturl();
</script>
</body>
</html>
Всего лишь табы для меню + функция которая будет открывать все ссылки в iframe. Проблема заключается в табах. Как только я решил избавиться от setAttribute в угоду старым IE и моему учителю начались проблемы. При вызове функции начали теряться номера нужных блоков для текста. . . Я подумал решить эту проблемы давно известной мне БД JSON(Известна мне она известна, но использую её в первый раз). Как бы eval использовал по инструкции. Но пишет что не хватает ')' . . . Пробовал JSON.parse но толку если старый дряхлый ie его не понимает? Подскажите решение проблемы... |
Вообще не понял, при чем здесь eval, json и setAttribute. Вам бы по замыканиям повторить материал
<!DOCTYPE html>
<html>
<head>
<title></title>
<meta name="" content="">
<style>
body{margin:0; padding:0; background:url(file:///C:/Users/Rail-gun/Desktop/ravens.gif);}
.tubs{border-radius:0px 0px 15px 15px; border: solid 2px #c4c6c1; background:#cfd1cd; padding-top:5px; padding-left:5px; padding-bottom:5px; padding-right:5px; margin-left:20px;width:auto; height:auto; float: left; box-shadow: 3px 3px rgba(0, 0, 0, 0.6);z-index:99;}
.textbody{display:none; background: #d7d9d5; border: solid 2px #c4c6c1; margin-top:1%;box-shadow: 3px 3px rgba(0, 0, 0, 0.7); white-space:pre-wrap;overflow: auto; top:0; left:0;}
</style>
</head>
<body>
<div align='center'>
<div id='globaltext' align="center" >
<div class="textbody" >тест главной</div>
<div class="textbody" >текст информации</div>
<div class="textbody" >текст о продукции</div>
<div class="textbody" >текст адреса</div>
<div class="textbody" >текст контакты</div></div>
<div id="menu" align="center">
<div class="tubs"><a href="#6">Главная</a></div>
<div class="tubs">Информация</div>
<div class="tubs">О Продукции</div>
<div class="tubs">Адреса</div>
<div class="tubs">Контакты</div>
</div></div>
<script>
function firstfun(){
var menuid=document.getElementById('menu');
var num=menuid.children.length;
var i=0;
while(i<num){
menuid.children[i].onclick=function (i) {
return function() {
tabs({"num": i, "id":"globaltext"})
};
}(i);
i++
}
}
function tabs(obj){
//var JSONstring='{'+obj+'}';
//var JSONOBJ=eval( " ( " + obj + " ) " );
var bodyid=document.getElementById(obj.id);
var num=bodyid.children.length;
var i=0;
while(i<num){bodyid.children[i].style.display="none";i++}
bodyid.children[obj.num].style.display="block";
bodyid.children[element].style.height=screen.height-((screen.height/100)*3)-155+'px';
bodyid.children[element].style.width=screen.width-35+'px';
}
function seturl(){
var a=document.getElementsByTagName("a");
var num=a.length;
var i=0;
while(i<num){var ahref=a[i].href; a[i].onclick=function(){openframe(ahref)}; a[i].removeAttribute('href');i++;}
}
function openframe(ahref){
}
firstfun();
seturl();
</script>
</body>
</html>
|
BETEPAH, а можно ссылку? У меня в голове не мамло информации скопилось за два года. Но разложить по полочкам всё никак....
|
|
BETEPAH,
Не могли бы вы объяснить вот эту часть.
while(i<num){
menuid.children[i].onclick=function (i) {
return function() {
tabs({"num": i, "id":"globaltext"})
};
}(i);
i++}
Иначе медвежья услуга =) |
Цитата:
Именно эта часть и станет понятной, когда почитаете про замыкания. У вас в этой части код не рабочий.
while(i<num){menuid.children[i].onclick=function () {tabs('"num":"'+i+'"; "id":"globaltext"')};i++}
При клике i будет равно num-1. Почитайте статью, а когда прочтете и останется что-то непонятное, обсудим |
BETEPAH,
окей, спасибо =) |
BETEPAH,
остался один вопрос. Почему var JSONOBJ комментарий? |
Цитата:
|
Цитата:
|
| Часовой пояс GMT +3, время: 16:09. |