0

常に M26 を返すコードに続く JavaScript でスパン ID を取得したいのですが、M26 または M27 の異なるクリックで異なる値が必要です。

function clickHandler() {
    var xid= document.getElementsByTagName("span");
    var xsp= xid[0].id;   
    alert(xsp);     
} 
}

<html>
    <BODY LANGUAGE = "javascript" onClick = "clickHandler();">
        <a href="javascript:void(0)"><u><b><span id=M26>2011-  
        2012</span></b></u></a>   
        <div id=c26 STYLE="display:none">
            <a href="javascript:void(0)"><u><b><span id=M27>2012-  
            2013</span></b></u></a>   
        <div id=c27 STYLE="display:none"> 
    </body>
</html>
4

3 に答える 3

3

あなたが直面している問題は、var xid= document.getElementsByTagName("span");クリックした場所に関係なく、ページ上のすべてのスパンを取得することです。

この問題を解決するには、関数内でクリックされたオブジェクトへの参照を渡すだけです。例えば:

<span id=M26 onclick="clickHandler(this);" >2011-2012</span>

次に、JavaScriptコードで:

function clickHandler(object) {
    alert(object.id);
}

ただし、イベントを HTML タグ内でインライン化するのではなく、JavaScript 内でバインドすることをお勧めします。

この記事では、イベントを要素にバインドするさまざまな方法について説明します。

于 2012-11-30T11:57:57.903 に答える
0

クリックされたばかりの要素の ID を取得するには、いくつかの方法があります。

thisへの参照をハンドラーに渡します。

onclick="handlerFunc(this);">

または、さらに良いことに、イベント オブジェクトをハンドラーに渡します。これにより、イベントの動作も操作できます。

onclick='handlerFunc(event);'>
//in JS:
function handlerFunc(e)
{
    e = e || window.event;
    var element = e.target || e.srcElement;
    element.id;//<-- the target/source of the event (ie the element that was clicked)
    if (e.preventDefault)
    {//a couple of methods to manipulate the event
        e.preventDefault();
        e.stopPropagation();
    }
    e.returnValue = false;
    e.cancelBubble = true;
}
于 2012-11-30T12:14:17.477 に答える
-1

これにはgetAttribute()関数を使用できます...

function clickHandler() {
var xid= document.getElementsByTagName("span");
var xsp= xid[0].getAttribute('id');   
alert(xsp);     
} 


<html>
<body LANGUAGE = "javascript" onload = "clickHandler();">
    <a href="javascript:void(0)"><u><b><span id=M26>2011-  
    2012</span></b></u></a>   
    <div id=c26 STYLE="display:none">
        <a href="javascript:void(0)"><u><b><span id=M27>2012-  
        2013</span></b></u></a>   
    <div id=c27 STYLE="display:none"> 
</body>
</html>

作業デモを見る

于 2012-11-30T12:04:43.510 に答える