1

非常に長い名前のテキストボックスがあります。ページの読み込み時に動的にチェックボックスに置き換えようとしています。以下はコードです。ラインだけ使ってみた

document.getElementsByName("!SRC!SKU!U_PLANNEDACTIVITY!E!amrit_test_search!U!2")[0].style.display="none"

私のjavascriptでもそれは機能していません。だから私は何か間違っていると思う

document.getElementsByName()


        <html>
    <head>
    <script type="text/javascript">
    $(document).ready(function()
    {
    //var a="!SRC!SKU!U_PLANNEDACTIVITY!E!amrit_test_search!U!2";
     var myElement = document.createElement('<input type="checkbox" name="vehicle" value="Bike" id="checkPub"/>');
     document.getElementsByName("!SRC!SKU!U_PLANNEDACTIVITY!E!amrit_test_search!U!2")[0].insertAdjacentElement('afterEnd', myElement); 
    document.getElementsByName("!SRC!SKU!U_PLANNEDACTIVITY!E!amrit_test_search!U!2")[0].style.display="none";



    });
    </script>
    </head>
    <body>
    <input type="text" name="!SRC!SKU!U_PLANNEDACTIVITY!E!amrit_test_search!U!2" value="1"  />
    </body>

</html>
4

1 に答える 1

0

そのように document.createElement を使用することはできません!

チェック: https://developer.mozilla.org/en-US/docs/DOM/document.createElement

したがって、次のようなものが必要になります。

var myElement = document.createElement('input');
myElement.type = "checkbox";
myElement.name = "vehicle";
myElement.value = "Bike";
myElement.id = "checkPub";

また、要素を一度だけ検索して、文字列を変数に格納しても問題はありません。

var a="!SRC!SKU!U_PLANNEDACTIVITY!E!amrit_test_search!U!2";
var origelem = document.getElementsByName(a)[0];
origelem.insertAdjacentElement('afterEnd', myElement);
origelem.style.display="none";

また、jQueryを使用しているようです(から判断$(document).ready(...)。jQuery を使用していない場合は、次のようにしてみてください。

<html>
    <head>
        <script type="text/javascript">
        function onLoad() {
            var a="!SRC!SKU!U_PLANNEDACTIVITY!E!amrit_test_search!U!2";
            var myElement = document.createElement('input');
            myElement.type = "checkbox";
            myElement.name = "vehicle";
            myElement.value = "Bike";
            myElement.id = "checkPub";
            var origelem = document.getElementsByName(a)[0];
            origelem.insertAdjacentElement('afterEnd', myElement);
            origelem.style.display="none";
        }
        </script>
    </head>
    <body onload="onLoad()">
        <input type="text" name="!SRC!SKU!U_PLANNEDACTIVITY!E!amrit_test_search!U!2" value="1"  />
    </body>
</html>

これがうまくいくことを願っています。

また、デバッグすることを学びます。firebug または類似の chrome 開発者ツールを使用します。エラーについて通知するコンソールがあります。

編集: insertAdjacentElement は IE とクロムでのみ機能します。シンプルな

origelem.parentNode.appendChild(myElement);

これに代わる良いものです。

于 2012-09-07T07:05:53.383 に答える