JavaScript OnClick не работает на iOS
Я разработал код, который определяет, когда пользователь щелкает ячейку в таблице, а затем использует bgColor, установленный для этой ячейки.
Все отлично работает на настольном компьютере, но когда я пытаюсь использовать свой iPad, он ничего не делает. Я пытался использовать touchstart, но это не имело никакого значения.
Я попытался изменить это:-
t[i].onclick = getVal;
к этому:-
t[i].addEventListener('touchstart', function(){getVal});
Но это не сработало.... Мне также нужно будет поддерживать как настольные, так и сенсорные устройства... поэтому не уверен, как мне обеспечить поддержку обоих в этой ситуации.
Мой текущий код выглядит так:
<script type="text/javascript">
function getVal(e) {
var targ;
if (!e) var e = window.event;
if (e.target) targ = e.target;
else if (e.srcElement) targ = e.srcElement;
if (targ.nodeType == 3) // defeat Safari bug
targ = targ.parentNode;
var colorSelected = targ.attributes.bgcolor.value;
alert(colorSelected);
}
onload = function()
{
var ids = ['colorchart1', 'colorchart2', 'colorchart3', 'colorchart4', 'colorchart5'];
for(var j = 0; j < ids.length; j++)
{
var t = document.getElementById(ids[j]).getElementsByTagName("td");
for ( var i = 0; i < t.length; i++ )
t[i].onclick = getVal;
}
}
</script>
<table id="colorchart1">
<tr>
<td bgColor="#F8E0E0"></td><td bgColor="#F8ECE0"></td><td bgColor="#F7F8E0"></td><td bgColor="#ECF8E0"></td>
<td bgColor="#E0F8E0"></td><td bgColor="#E0F8EC"></td><td bgColor="#E0F8F7"></td><td bgColor="#E0ECF8"></td><td bgColor="#E0E0F8"></td>
</tr><tr>
<td bgColor="#F5A9A9"></td><td bgColor="#F5D0A9"></td><td bgColor="#F2F5A9"></td><td bgColor="#D0F5A9"></td>
<td bgColor="#A9F5A9"></td><td bgColor="#A9F5D0"></td><td bgColor="#A9F5F2"></td><td bgColor="#A9D0F5"></td><td bgColor="#A9A9F5"></td>
</tr>
<table>
1 ответ
Как насчет этой функции дескриптора?
function handler(e){
e.target.nodeName!='TD'||alert(e.target.bgColor+' on '+
e.target.parentNode.parentNode.parentNode.id);
}
window.addEventListener('click',handler,false);
or
window.addEventListener('touchstart',handler,false);
демонстрация
с несколькими столами
http://jsfiddle.net/gfmbkmmn/1/
вышеуказанная функция является альтернативным решением для обработки нескольких таблиц с помощью одного обработчика событий. чтобы найти ошибку, нужно больше информации:
примечание: в ios лучше что пишешь window.onload
и как насчет script
теги в вашем "текущем коде", что делает функция getVal?
если у вас есть какие-либо вопросы по поводу кода, просто спросите
РЕДАКТИРОВАТЬ
function getVal(e){
e=e||window.event;//not needed
e.target=e.target||e.srcElement;//not needed
if(e.target.nodeName=='TD'){// check if it's a td
alert(e.target.bgColor);// why write 'targ.attributes.bgcolor.value' ?
}
}
ошибка узла 7 лет назад "7 лет назад была изменена..." http://bugs.jquery.com/ticket/1148
js чувствителен к регистру: bgcolor != bgColor
http://jsfiddle.net/gfmbkmmn/2/ этот базовый пример позволяет вам создать быструю цветовую палитру.