使用Javascript document.write构建字符串
String building with Javascript document.write
我试图从javascript写一个div元素。我想用document.write()将这行写成如下:
<div class="Square15px" onmouseover="changeColor('boxid')"></div>
我调用写div元素的函数:
<script type="text/javascript">
colorPicker("box1");
</script>
我尝试了document.write()方法,以几种不同的方式构建字符串,例如:
function colorPicker(box) {
var box = document.getElementById(box);
var boxid = box.id;
var AquaStr1 = '<div class="AquaSquare15px" onmouseover="changeColor("';
var AquaStr2 = '")></div>';
var AquaString = AquaStr1.concat(boxid, AquaStr2);
document.writeln(AquaString);
}
我也尝试过使用+作为concat操作符拆分字符串的许多不同方式。字符串在boxid的末尾不正确地生成。无论我如何编写代码块,我都得到相同的结果:
<div class="AquaSquare15px" onmouseover="changeColor(" box1?)=""/>
我就是看不出我的错误,我已经查看了我能找到的所有帮助。除了引号和box1之间的空格外,一切都是正确的,直到那个神秘的问号。我查看了IE9开发工具(F12)的结果。我不是一个有经验的程序员,所以我怀疑我在某种程度上是错误的。
正如评论部分指出的那样:您不应该使用document.write
。但是,您的字符串连接出错了。试试这个:
function colorPicker(box) {
var boxid = document.getElementById(box).id;
var aquaStr = '<div class="AquaSquare15px" onmouseover="changeColor('''+boxid+''')"></div>';
document.writeln(aquaStr);
}
您在属性值中使用引号而没有对其进行HTML编码。此外,您还缺少属性值的结束引号,因此结束标记和其他一些代码将在属性中结束。
可以转义引号:
var AquaStr1 = '<div class="AquaSquare15px" onmouseover="changeColor("';
var AquaStr2 = '")"></div>';
或者您可以使用撇号代替,但是您需要在字符串中转义它们:
var AquaStr1 = '<div class="AquaSquare15px" onmouseover="changeColor(''';
var AquaStr2 = ''')"></div>';
我想问题可能是引号。应该是:
var AquaStr1 = '<div class="AquaSquare15px" onmouseover="changeColor(''';
var AquaStr2 = ''')"></div>';
此外,你不应该用新的声明覆盖你的函数形参:
function colorPicker(box) {
var box = document.getElementById(box);
请使用其他名称,如
function colorPicker(boxid) {
var box = document.getElementById(boxid);
也就是说,通过id获取元素并读取id:
是没有多大意义的var box = document.getElementById(box);
var boxid = box.id;
您已经获得了ID作为函数参数。
显示结果:
function colorPicker(boxid) {
var AquaStr1 = '<div class="AquaSquare15px" onmouseover="changeColor(''';
var AquaStr2 = ''')"></div>';
var AquaString = AquaStr1.concat(boxid, AquaStr2);
document.writeln(AquaString);
}
正如其他人已经建议的那样,您不应该使用document.write
。例如,使用jQuery将看起来像这样:
$('body').append(AquaString);
相关文章:
- jquery从2个json字符串构建一个复选框表单
- 在构建字典时,作为关键字的变量会自动变为字符串
- regex来构建字符串,直到遇到第N个匹配项
- 如何将动态构建的字符串作为http头在http.call中与流星一起传递
- 使用video-js构建一个包含字符串的HTML视频
- 使用 javascript 中的表单元素构建一个 xml 字符串
- 在数组中使用注释字符构建复杂字符串
- JS/jQuery遍历HTML元素以动态构建字符串
- 使用 javascript/jQuery 构建 JSON 字符串
- 如何基于下拉选择构建 URL 查询字符串
- jQuery从HTML字符串构建不正确的DOM
- 从 Javascript 中的复杂嵌套对象值构建字符串
- JavaScript - 如何使用转义字符构建字符串
- 使用单引号在 JavaScript 中构建字符串
- 敲除.js如何从绑定构建字符串
- 使用javascript构建字符串
- 使用Javascript document.write构建字符串
- 如何使用项目符号格式构建字符串
- 如何通过构建字符串动态访问变量
- 在nodejs中从sqlite3数据库构建字符串