javascript 和浏览器中的 td 元素事件属性
javascript and td element events properties in browsers
我无法使用 JQuery。
尝试在 td 元素上设置事件监听器,这样如果用户单击它,它将读取 td 中的文本并在相同的 table 行中查找重复项。例如 ABC 重复。
<tr><td onclick='foo()'>ABC</td><td>7</td></tr>
<tr><td onclick='foo()'>DEF</td><td>8</td></tr>
<tr><td onclick='foo()'>HIJ</td><td>9</td></tr>
<tr><td onclick='foo()'>ABC</td><td>10</td></tr>
有人说我不能在td标签上使用onclick方法,所以我就这样做了。
<tr><td><span onclick='foo()'>XYZ</span></td><td>2</td></tr>
事件函数如下:
function foo(e) {
alert('hi');
alert(e.target);
// alert(window.Event.target.innerHTML);
// alert(event.target.text);
// alert(event.target.tagName);
// alert(event.target.textContent);
// alert(event.target.parentElement.tagName);
// alert(event.target.innerHTML);
我首先注意到的是Firefox、IE,甚至不启动事件代码方法和属性。他们只是 运行 直到高度警惕。但是其余的代码没有被执行。
Chrome,另一方面,可以运行事件代码。
我可以使用 alert(event.target.innerHTML); 成功获取 innerHtml
如何在 Firefox 和 IE 浏览器中实现 运行。
您必须将 event
作为参数传递给您的 foo
函数:
<tr><td onclick='foo(event)'>ABC</td><td>7</td></tr>
<tr><td onclick='foo(event)'>DEF</td><td>8</td></tr>
<tr><td onclick='foo(event)'>HIJ</td><td>9</td></tr>
<tr><td onclick='foo(event)'>ABC</td><td>10</td></tr>
那你就可以打电话了。但是您还必须检查在 IE 浏览器中可能具有不同名称的目标:
var target = e.target || e.srcElement;
您正在执行一个没有参数的函数。所以 "e" 将是未定义的。
<tr><td><span onclick='foo(this)'>XYZ</span></td><td>2</td></tr>
现在您可以使用代表 Dom 元素的 e。
这篇 link 可能会对您有所帮助:
what's "this" in javascript onclick?
干杯,
瓦伦丁
我在 Firefox、Explorer 和 Chrome 中对此进行了测试,并按预期工作:
<table>
<tr><td onclick='foo(this)'>ABC</td><td>7</td></tr>
<tr><td onclick='foo(this)'>DEF</td><td>8</td></tr>
<tr><td onclick='foo(this)'>HIJ</td><td>9</td></tr>
<tr><td onclick='foo(this)'>ABC</td><td>10</td></tr>
</table>
<script>
function foo(element){
var myContent = element.innerHTML;
var trElementsInTable = element.parentElement.parentElement.children;
var numberOfOcurrences = 0;
for (i=0;i<trElementsInTable.length;i++){
if (trElementsInTable[i].children[0].innerHTML == myContent) numberOfOcurrences++
}
if (numberOfOcurrences > 1){
alert("I've found " + numberOfOcurrences + " ocurrences of content " + myContent);
}
else{
alert("Ok I am not repeated");
}
}
</script>
希望对您有所帮助
我无法使用 JQuery。
尝试在 td 元素上设置事件监听器,这样如果用户单击它,它将读取 td 中的文本并在相同的 table 行中查找重复项。例如 ABC 重复。
<tr><td onclick='foo()'>ABC</td><td>7</td></tr>
<tr><td onclick='foo()'>DEF</td><td>8</td></tr>
<tr><td onclick='foo()'>HIJ</td><td>9</td></tr>
<tr><td onclick='foo()'>ABC</td><td>10</td></tr>
有人说我不能在td标签上使用onclick方法,所以我就这样做了。
<tr><td><span onclick='foo()'>XYZ</span></td><td>2</td></tr>
事件函数如下:
function foo(e) {
alert('hi');
alert(e.target);
// alert(window.Event.target.innerHTML);
// alert(event.target.text);
// alert(event.target.tagName);
// alert(event.target.textContent);
// alert(event.target.parentElement.tagName);
// alert(event.target.innerHTML);
我首先注意到的是Firefox、IE,甚至不启动事件代码方法和属性。他们只是 运行 直到高度警惕。但是其余的代码没有被执行。
Chrome,另一方面,可以运行事件代码。 我可以使用 alert(event.target.innerHTML); 成功获取 innerHtml
如何在 Firefox 和 IE 浏览器中实现 运行。
您必须将 event
作为参数传递给您的 foo
函数:
<tr><td onclick='foo(event)'>ABC</td><td>7</td></tr>
<tr><td onclick='foo(event)'>DEF</td><td>8</td></tr>
<tr><td onclick='foo(event)'>HIJ</td><td>9</td></tr>
<tr><td onclick='foo(event)'>ABC</td><td>10</td></tr>
那你就可以打电话了。但是您还必须检查在 IE 浏览器中可能具有不同名称的目标:
var target = e.target || e.srcElement;
您正在执行一个没有参数的函数。所以 "e" 将是未定义的。
<tr><td><span onclick='foo(this)'>XYZ</span></td><td>2</td></tr>
现在您可以使用代表 Dom 元素的 e。
这篇 link 可能会对您有所帮助: what's "this" in javascript onclick?
干杯, 瓦伦丁
我在 Firefox、Explorer 和 Chrome 中对此进行了测试,并按预期工作:
<table>
<tr><td onclick='foo(this)'>ABC</td><td>7</td></tr>
<tr><td onclick='foo(this)'>DEF</td><td>8</td></tr>
<tr><td onclick='foo(this)'>HIJ</td><td>9</td></tr>
<tr><td onclick='foo(this)'>ABC</td><td>10</td></tr>
</table>
<script>
function foo(element){
var myContent = element.innerHTML;
var trElementsInTable = element.parentElement.parentElement.children;
var numberOfOcurrences = 0;
for (i=0;i<trElementsInTable.length;i++){
if (trElementsInTable[i].children[0].innerHTML == myContent) numberOfOcurrences++
}
if (numberOfOcurrences > 1){
alert("I've found " + numberOfOcurrences + " ocurrences of content " + myContent);
}
else{
alert("Ok I am not repeated");
}
}
</script>
希望对您有所帮助