if() {}
else {}
JavaScript и Mozila Firefox
Подскажите, кто знает:
мне надо, чтобы координата x была на 30 меньше реальной, при щелчке мыши на картинке. Пишу <IMG src="Отчет/Image1.bmp" onclick="window.status = 'x = ' + (event.offsetX - 30);">
Скажите как подправить код, чтобы работал и в IE и в браузере Mozila Firefox?
Сейчас работает только в IE.
В настройках Mozil-ы нашла галочку, чтобы javascript поддреживал строку состояния. В результате в строке сотояния при щелчке на картинку появляется надпись Х=Nan очевидно выражение onclick="window.status = 'x = ' + (event.offsetX - 30);" Mozila не может вычислить. Помогите переделать скрипт, чтобы вычислял для обоих браузеров, please. :)
var y = (is.ns)? e.pageY : event.y;
думаю поможет;)
Если можно, то подробне пожалуйста. Я начинающая в javascript. :)
Если ns браузер то используем e.pageX (координата по Х), иначе (т.е. MSIE браузер) то берем event.x
или проще для мозилки используется e.pageX, а для експлорера event.x
Код:
Только синтаксис другой.
2He!p Предлагаю в следующий раз, когда человек говорит, что он начинающий, то использововать нормальный синтаксис.
в принципе ей это и надо было...а по поводу замечания-учту;)
[html]
<script>
function fPosX()
{
var pos;
if(is.ns) {pos= e.pageX-30;}
else {pos = event.x-30;}
window.status=(pos);
}
</script>
</head>
***********************************
<td>
<img src="Image2.bmp" alt="" onclick=fPosX();>
</td>
[/html]
Не работает. :( Как определить is?
[html]
<script>
function fPosX(pos)
{
window.status=(pos);
}
</script>
<img src="foto.gif" alt="" onclick="java script:if(navigator.appName.substring(0,3)=='Mic'){pos = event.x-30;}else {pos= e.pageX-30;}fPosX(pos);">
[/html]
Длинно и коряво :), но поясню navigator.appName.substring(0,3)=='Mic' - определяешь, что если первые три буквы в имени браузера Mic, то это експлорер (полное имя Microsoft Internet Explorer), если нет то значит выполняется код после else, алгоритм такой, лучше почистить мой код и привести к нормальному виду :) Надеюсь понятно.
[html]if(navigator.appName.indexOf("Microsoft") != 0) {
alert("мозилка");
}
else {
alert("не мозилка");
}
[/html]
....
[/quote]
Спасибо код выглядит очень красиво. Такой вариант мне очень нравиться. Но пока не работает. :(
Почему-то на границе рисунка он показывает 7, а не -30:confused:
а, в Mozile снова пишет NaN (не может вычислить).
Правильно всегда показывает код для IE <img src="Image3.bmp" alt="" onclick="window.status = 'x = ' + (event.offsetX - 30);"> на начальной границе рисунка строго показывает -30, но он для Mozily-ы не подходит. Буду экспереминтировать дальше. :)
<html>
<head>
<script>
function fPosX(posx,posy)
{
alert(posx+" "+posy);
}
</script>
</head>
<body>
<img src="foto.gif" alt="" onclick="java script:if(navigator.appName.substring (0,3)=='Mic'){fPosX(event.x-30,event.y-30)}else {fPosX(event.pageX-30,event.pageY-30)};">
</body>
</html>
а на начальной границе -30 как тебе и надо)
[html]
<html>
<head>
<script>
function fPosX(posx,posy)
{
var obj=document.getElementById("img");
img_x=obj.offsetLeft;
img_y=obj.offsetTop;
new_x=posx-img_x;
new_y=posy-img_y;
alert(new_x+" "+new_y);
}
</script>
</head>
<body>
<img src="foto.gif" name='img' id='img' border='5' alt="" onclick="java script:if(navigator.appName.substring (0,3)=='Mic'){fPosX(event.x-30,event.y-30)}else {fPosX(event.pageX-30,event.pageY-30)};">
</body>
</html>
[/html]
[html]
<script>
function fPosX(pos)
{
/*window.status=(pos);*/
alert(pos);
}
</script>
<img src="foto.gif" style="border:solid 1px red;" alt="" onclick="java script:if(navigator.appName.substring(0,3)=='Mic'){pos = event.x;}else{pos= event.pageX;}fPosX(pos);">
[/html]
Хотя первая странная вещь, граница действительно начинается с целого значения, а не с нуля, а вторая window.status=(pos); не работает в FireFox, почему-то :(
Я прамо разочаровался в FF
Вроде все выглядит правильно, но как же получить -30? Пока это делает только код: onclick="window.status = 'x = ' + (event.offsetX - 30);" Для IE(для Мозилы нет).
Неужели у вас показывает -30?
P.S.
Вот пришла к такому коду с вашей помощью:
Вот первое условие правильное, помогите else переделать <td><img src="Image2.bmp" name='img' id='img' alt="" onclick="java script:if(navigator.appName.substring (0,3)=='Mic')
{window.status = 'x = ' + (event.offsetX - 30)}else {fPosX(event.pageX-30)};">
</td>
Вроде все выглядит правильно, но как же получить -30? Пока это делает только код: onclick="window.status = 'x = ' + (event.offsetX - 30);" Для IE(для Мозилы нет).
Неужели у вас показывает -30?[/quote]
Так вот у меня все работает... возьми код приведенный ниже и просто создай новый файлик и проверь в мазиле все ок да и в ИЕ тоже думаю также
[html]
<html>
<head>
<script>
function fPosX(posx,posy)
{
var obj=document.getElementById("img");
img_x=obj.offsetLeft;
img_y=obj.offsetTop;
new_x=posx-img_x;
new_y=posy-img_y;
alert(new_x+" "+new_y);
}
</script>
</head>
<body>
<img src="foto.gif" name='img' id='img' border='5' alt="" onclick="java script:if(navigator.appName.substring (0,3)=='Mic'){fPosX(event.x-30,event.y-30)}else {fPosX(event.pageX-30,event.pageY-30)};">
</body>
</html>
[/html]
Оставила такой вариант:
[html]
<html>
<head>
<script>
function fPosX(posx)
{
var obj=document.getElementById("img");
img_x=obj.offsetLeft;
new_x=posx-img_x;
window.status=('X = ' + new_x);
}
</script>
</head>
<body>
<img src="Image1.bmp" name='img' id='img' alt="" onclick="java script:if(navigator.appName.substring (0,3)=='Mic'){window.status = 'x = ' + (event.offsetX - 30)}else {fPosX(event.pageX-30)};">
</body>
</html>
[/html]
Для IE оставила старый код, потому что у меня при написании {fPosX(event.x-30,event.y-30)} упорно показывало -28 в IE. Теперь в обоих браузерах показывает -30. Ура и большое всем спасибо!:rolleyes:
P.S. Маленький вопрос отсался. Зачем в коде id='img' ?
P.S. Маленький вопрос отсался. Зачем в коде id='img' ?[/QUOTE]
Доступ по средствам document.getElementById, к свойствам элимента осуществляется благодаря объявлению этому элименту id , а вот name='img' можешь удалить, оно тут не нужно.
Я почему спросила, просто я удалила id='img' и оно работает!
Вот весь код:
[html]
<html>
<head>
<script>
function fPosX(posx)
{
var obj=document.getElementById("img");
img_x=obj.offsetLeft;
new_x=posx-img_x;
window.status=('X = ' + new_x);
}
</script>
</head>
<body>
<img src="Image1.bmp" name='img' alt="" onclick="java script:if(navigator.appName.substring (0,3)=='Mic'){window.status = 'x = ' + (event.offsetX - 30)}else {fPosX(event.pageX-30)};">
</body>
</html>
[/html]
Тяжело что-то дается мне javascript, все в тумане.:rolleyes:
[color=red]Предупреждение: такие объемы кода нужно форматировать[/color]
[ code ] [ /code ], [ php ] [ /php ], [ html ][ /html ]
попробуй в мазиле...а почему работает только одному билу известно наверное)
Да, в Мозилке не работает.:p Теперь точно Мозилку не люблю!:)
Большое всем спасибо за помощь!
да на здоровье... ты пропиши id='img' и все будет работать)