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>

希望这对你有用。

还要学习DEBUG。使用 firebug 或类似的 chrome 开发者工具。有一个控制台告诉您错误。

编辑: insertAdjacentElement 仅适用于 IE 和 chrome。一个简单的

origelem.parentNode.appendChild(myElement);

是一个很好的替代品。

于 2012-09-07T07:05:53.383 回答