Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Что не так в скрипте (https://javascript.ru/forum/dom-window/4993-chto-ne-tak-v-skripte.html)

alexKniaz 06.09.2009 20:16

Что не так в скрипте
 
function showHint(show,text){
 if(show==true){
  var obj=document.getElementById('hint');
  obj.style.position='fixed';
  obj.style.left=window.clientWidth;
  obj.style.top=window.clientHeight;
  window.status='x-'+obj.style.left+';y-'+obj.style.top;
  obj.innerHTML=text;
 }
 else{
  document.getElementById('hint').innerHTML='';
 }
}


<div id="hint" style="width:150px;background-color:#000000;color:#ffffff;"></div>


Должен вывести этот див в правый нижний угол экрана.
Но не выводит. Что не так?

alexKniaz 06.09.2009 20:19

Вот пример
<script type="text/javascript">
 if(show==true){
  var obj=document.getElementById('hint');
  obj.style.position='fixed';
  obj.style.left=window.clientWidth;
  obj.style.top=window.clientHeight;
  window.status='x-'+obj.style.left+';y-'+obj.style.top;
  obj.innerHTML=text;
 }
 else{
  document.getElementById('hint').innerHTML='';
 }
}
</script>
<span onmousemove="showHint(true,'DELPHI');" onmouseover="showHint(false,'');">DELPHI</span>
<div id="hint" style="width:150px;background-color:#000000;color:#ffffff;"></div>

[/html]

Octane 06.09.2009 20:27

Единицы измерения допишите.

alexKniaz 06.09.2009 20:31

Попробовал изменить JS и HTML
Тиак:
function showHint(show,text){
 if(show==true){
  var obj=document.getElementById('hint');
  var temp=new Integer();
  temp=document.body.clientWidth-150;
  obj.style.left=temp.toString()+'px';
  temp=document.body.clientHeight-150;
  obj.style.top=temp.toString()+'px';
  obj.innerHTML=text;
 }
 else{
 }
}

<div id="hint" style="width:150px;float:right;background-color:#000000;color:#ffffff;position:absolute;"></div>

Octane 06.09.2009 20:34

Цитата:

Сообщение от alexKniaz
var temp=new Integer();

Вы на каком языке пишите?

obj.style.left = window.clientWidth + "px";


только window.clientWidth хз где будет работать, в некоторых браузерах есть window.innerWidth, в других надо ширину documentElement или body определять.


Измерения окна, документа и элементов

_

alexKniaz 06.09.2009 20:44

Всё нашёл тут нужную стаью.
Перенастроил так JS и HTML
<div id="hint" style="width:150px;float:right;background-color:#000000;color:#ffffff;position:absolute;"></div>

function showHint(show,text){
 if(show==true){
  var obj=document.getElementById('hint');
  var temp=0;
  temp=document.body.clientWidth-150;
  obj.style.left=temp.toString()+'px';
  temp=document.body.clientHeight-150;
  obj.style.top=temp.toString()+'px';
  obj.innerHTML=text;
  window.status='x='+obj.style.left+'y='+obj.style.top;
 }
 else{
 }
}

По идее исходя из статьи скрипт посчитает ширину и высоту всего дока.
Тк DOCTYPE нагло скоировал с этой статьи, т.е.
Цитата:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

alexKniaz 06.09.2009 20:46

P.S. Короче опера несмотря не на что этот доктайп игнорирует как и ишак

Octane 06.09.2009 21:00

Все браузеры переходят в Standards Compliance Mode c указанным доктайпом XHTML 1.0, вы что-то делаете неправильно.

И toString, при сложении числа со строкой, делать не нужно, сработает приведение типов, это основы JavaScript…

alexKniaz 06.09.2009 21:11

Проверю

alexKniaz 06.09.2009 21:25

Ни один XHTML DOCTYPE который мне известен (Strict (строгий), Transitional (переходный), Frameset (с фреймами)) не работает.
Вот они сами
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">


Часовой пояс GMT +3, время: 05:34.