2

私は十分長い間 JavaScript を使用してきましたが、何が問題なのか完全に困惑したのはこれが初めてです。

Object #<HTMLInputElement> has no method 'addTag'

というわけで、ここにjavascriptファイルを置いておきます。

function actions(){
    var main = this;

    this.addTag = function(){
        var sTag = $('#sTag').val();
        if(sTag!=''){
            var i = $('#tag-list li').length+1;
            var html = '<li id="tag_'+i+'">';
                html+= '    <input type="hidden" name="sTags" value="'+sTag+'" />'+sTag;
                html+= '    <a href="#" class="small button delete" title="Remove tag" onclick="act.removeTag('+i+');return false;"></a>';
                html+= '</li>';
            $('#tag-list ul').append(html);
            $('#tag-list').show();
        }
    }
    this.removeTag = function(i){
        $('#tag_'+i).remove();
        if($('#tag-list li').length==0){
            $('#tag-list').hide();
        }
    }
}

比較的ベーシック。JavaScriptファイルはこのようにページに含まれています

<script type="text/javascript" src="scripts.js"></script>
<script type="text/javascript">
    var act = new actions();
</script>

次に、フォームのページのさらに下に、リストにタグを追加するための基本的なシステムがあります

<input type="text" id="sTag" name="sTag" size="30" class="text left" style="margin:5px 4px 0 0;" value="" />
<a href="#" class="short medium button" onclick="act.addTag();return false;"><span class="tick"></span>Add</a>

これはリストに新しいタグを追加するためのもので、フォームが送信されるとリストが保存されます。

ページ全体のサイズが大きいため、関連する部分のみを示しています。

私はこのセットアップを使用しましたが、機能は異なりますが、これまで何十回または何百回も問題なく使用してきました。この問題は、これまでページにアクセスしたことがないさまざまなデバイスやブラウザーに存在するため、キャッシュの問題ではないと思います。

どんな助けでも大歓迎です!

4

1 に答える 1

0

ここで働いています

function actions(){

    this.addTag = function(){
        alert('add');
       var sTag = $('#sTag').val();
        if(sTag!=''){
            var i = $('#tag-list li').length+1;
            var html = '<li id="tag_'+i+'">';
                html+= '    <input type="hidden" name="sTags" value="'+sTag+'" />'+sTag;
                html+= '    <a href="#" class="small button delete" title="Remove tag" onclick="act.removeTag('+i+');return false;"></a>';
                html+= '</li>';
            $('#tag-list ul').append(html);
            $('#tag-list').show();
        } 
    }
    this.removeTag = function(i){
       $('#tag_'+i).remove();
        if($('#tag-list li').length==0){
            $('#tag-list').hide();
        } 

    }
}


  act = new actions();

このjsFiddleを確認してください。 http://jsfiddle.net/Uf9y6/2/

テストに使用しているブラウザを教えてください。

于 2013-05-20T11:42:12.290 に答える