38925


本件は案件№：38680[「遷移された子画面でリスト選択された値を、～」](https://ja.stackoverflow.com/questions/38680/)の続きです．．．  
先の件、お蔭様で親画面側のテキストボックスにID付与・除去を果たすことで、目的の行（テーブル内のテキスト枠）へリストの選択値を戻すことを成功しています。

今回はテキスト枠と同行にある隣のLabelへ、リスト選択された表示内容を戻したいと思っています。  
些細な原因とも思うわけですが、Labelということが影響しているのか、同行隣という要素の取得に失敗している要因かで、目的を達成できません。  
（動的に生成されるTABLE=HTMLを、開発ツールで見ることってできない？？）

JSの開発が初めて間もなく、デバッグが不慣れのため掲載してしまいました。  
お手すきの方ございましたら、解決に向けたご支援をよろしくお願い致します。

[code]

    // ★子画面ＪＳ★　品名コードのリストボックスで指定を受けたら．．．
    $("[name=car_model]").on("change", function(){
        // 親画面コード枠（TEXT）は、選択リストボックスの値を戻す
        var cd = $(".car_model option:selected").val();
    
        // 親画面名称枠（LABEL）は、選択リストボックスの表示内容を戻す
        var totalval = $(".car_model option:selected").text()
        var strtext = totalval.split("　　　");
        var name = strtext[1];
        alert(name);    // ←表示できた！！！
    
        // こちらは成功している
        var elem = window.opener.document.getElementById("99");
    　　　 $(elem).val(cd);
    
        // こちらが成功しない　***********************
        $(elem).closest("label").innerHTML = name;
        $(elem).closest("label").css("width", "20px");  //　まさか隠れてる、とか思って
        //********************************************
    
        //　親画面の指示行のID属性を除去し、当該子画面を閉じる
        $(elem).removeAttr("id");
        close();
    });
    
    // ★親画面ＪＳ★　品名コード検索画面（winOpenとセットで利用）
    $(document).on("click", ".cdsrch", function(e) {
        // **** 戻ってくるテキストボックス特定のため、IDに99を付与
        $(this).next().attr("id","99");
        // ****
        winOpen("cdselect0.php", 600, 960);
        return false;
    });
    function winOpen(url, width, height) {
        if (width > 800) {
            width = 800;
        }
        if (height > 600) {
            height = 600;
        }
        window.open(url, "_blank", "toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=yes, resizable=yes, width=" + width + ", height=" + height);
    }
    <!--★★親画面HTML-->
    <table>
        <tr class="appLineDummy">
            <td><button class="cdsrch" type="button"><img src="img/検索.png"></button>
                <input type="text" name="cd" style="width:45px;"></td>
            <td><label name="name"></label></td>
            <td><label name="capa"></label></td>
            <td><label name="scond"></label></td>
        </tr>
    </table>
    
[/code]


CC BY-SA 3.0
2017-10-20T05:26:43.240
38893
2017-10-21T11:54:07.613
2017-10-20T23:42:12.380
25696
25696
question
javascript jquery
子画面から親画面の値格納、TEXT枠は成功したが直近のLabelへ値が戻らない・表示されない？


$(elem).closest("label").innerHTML = name;  
ではなく、  
$(elem).closest("label").html(name);  
でいかがでしょうか。


CC BY-SA 3.0
2017-10-21T07:22:15.220
38923
2017-10-21T07:22:15.220
12233
38893
answer


labelへの指定が曖昧なので、ID指定での代入と親ＨＴＭＬの構造から 以下のスクリプトを書きました。

[code]

    $(function(){
        var cd = "001";
        var name = "name001";
    
    //    var elem = document.getElementById("99");
    //    $(elem).val(cd);
    //上の２行は、jqueryで 以下の様にも書ける
    $("#99").val(cd);
    //window.opener.$("#99").val(cd);
    
    //ID位置から２親戻って　trの配下のlabelを探す。
    var label = $("#99").parent().parent().find("label");
    //var label = window.opener.$("#99").parent().parent().find("label");
    
    
    //labelが複数なのでeq(index)で指定する。
    //$("#99").parent().parent().find("label").eq(0).html(name); と書いても良いが、毎回labelを探すので構造が大きくなると遅くなる。
        label.eq(0).html(name); //name
        label.eq(1).html("capa"); //capa
        label.eq(2).html("scond"); //scond
    });
[/code]

[code]

    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
    <table>
        <tr class="appLineDummy">
            <td><button class="cdsrch" type="button"><img width="30" src="https://cdn.sstatic.net/Sites/ja/img/apple-touch-icon@2.png?v=1cfb10b305ca"></button>
                <input type="text" name="cd" style="width:45px;" id="99"></td>
            <td><label name="name">xxx</label></td>
            <td><label name="capa"></label></td>
            <td><label name="scond"></label></td>
        </tr>
        <tr class="appLineDummy">
            <td><button class="cdsrch" type="button"><img width="30" src="https://cdn.sstatic.net/Sites/ja/img/apple-touch-icon@2.png?v=1cfb10b305ca"></button>
                <input type="text" name="cd" style="width:45px;"></td>
            <td><label name="name">yyy</label></td>
            <td><label name="capa"></label></td>
            <td><label name="scond"></label></td>
        </tr>
    </table>
[/code]


CC BY-SA 3.0
2017-10-21T07:38:56.657
38925
2017-10-21T11:54:07.613
2017-10-21T11:54:07.613
22793
22793
38893
answer