38866


親画面に動的で生成されるテーブルが存在しています（初期表示は10行）。初期表示の各行には行追加ボタンがあって、行を無限に増やすことができます。  
また、各行のある列にはinputタグのテキストボックスを構成していますが、nameだけが割り当てられているだけで、どの行もclass・id双方が設定されていない状態です。

window.openで開く子画面は、上記テーブルの各行にイメージボタンも配置されるので、この押下をもって開くようにしています。【この隣の要素】=テキストボックスへ、子画面側リストボックスで選択されたvalを戻したいと考えています。インターネット上の記事を見よう見まねで、現況以下コーディングになっています。  
（検証のための行を追加しています）

【親画面のJS】

[code]

    // 品名コード検索画面（winOpenとセットで利用）
    $(document).on("click", ".cdsrch", function(e) {
        // **** 戻ってくるテキストボックス特定のため、IDに99を付与
        $(this).next().attr("id","99");
        console.log($(this).next().prop("tagName")+"⇒"+$(this).next().prop("id"));
        // ****
        winOpen("cdselect0.php", 600, 960);
        return false;
    });
    
[/code]

【子画面のJS】

[code]

    //生成された品名コードのリストボックスで更に指定を受けたら．．．
    $("[name=car_model]").on("change", function(){
    　　　　var selectval = $(".car_model option:selected").val();
    //　　window.opener.document.getElementById("99").val(selectval);
    　　　　alert (selectval);
    　　　　alert (window.opener.document.getElementById("99").prop("tagName"));
    　　　　close();
    });
    
    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);
    }
    
[/code]

子画面側のJSがコけているのか、親画面に値が渡らないばかりか子画面のcloseも行われません。（案の定エラーになっている様子↓の図）

子画面側でID=99の要素を取得できない要因、解決策についてご支援を頂けませんでしょうか？？

開発ツールというものを初めて使い始めていますが、親画面のコンソールを見た限り、子画面を開く際に一応呼びもとのタグに99のID付与は成功しているようです。  
但し、子画面側で親画面のID=99のタグを見つけられない状況が起きているような気がします。

画像を貼り付けさせていただきます。[![画像の説明をここに入力](https://i.stack.imgur.com/tdjuy.png)](https://i.stack.imgur.com/tdjuy.png)[![画像の説明をここに入力](https://i.stack.imgur.com/wK4UC.png)](https://i.stack.imgur.com/wK4UC.png)


CC BY-SA 3.0
2017-10-13T14:09:22.157
38680
2017-10-19T09:12:28.050
2017-10-19T08:43:15.540
9008
25696
question
javascript jquery
遷移された子画面でリスト選択された値を、親画面のあるテキストボックスへ戻したい


以下のように修正するとエラーが消えませんか？

[code]

    $("[name=car_model]").on("change", function(){
    　　　　var selectval = $(".car_model option:selected").val();
    //　　window.opener.document.getElementById("99").val(selectval);
    　　　　var elem = window.opener.document.getElementById("99");
    　　　　alert (selectval);
    　　　　alert ($(elem).prop("tagName"));
    　　　　close();
    });
    
[/code]

getElementByIdがDOMの要素を取得するだけでjQueryオブジェクトになっていないためにpropにアクセス失敗しているだけな気がします。  
とんちんかんな答えだったらすみません。


CC BY-SA 3.0
2017-10-19T09:12:28.050
38866
2017-10-19T09:12:28.050
17014
38680
answer