相关疑难解决方法(0)

JS.如何用字符串表示的另一个元素/文本替换html元素?

我有一个替换html元素的问题.

例如,这是一个表:

<table>
    <tr>
        <td id="idTABLE">0</td>
        <td>END</td>
    </tr>
</table>
Run Code Online (Sandbox Code Playgroud)

(它可以是div,span,任何东西)

和JavaScript中的字符串:

var str = '<td>1</td><td>2</td>';
Run Code Online (Sandbox Code Playgroud)

(它可以是任何东西,123 text,<span>123 element</span> 456<tr><td>123</td>什么的)

我怎样才能idTABLEstr?替换元素?

所以:

<table>
    <tr>
        <td id="idTABLE">0</td>
        <td>END</td>
    </tr>
</table>
Run Code Online (Sandbox Code Playgroud)

变为:

<table>
    <tr>
        <td>1</td>
        <td>2</td>
        <td>END</td>
    </tr>
</table> 
<!-- str = '<td>1</td><td>2</td>'; -->

<table>
    <tr>
        123 text
        <td>END</td>
    </tr>
</table>
<!-- str = '123 text' -->

<table>
    <tr> 
        <td>123</td> 
        <td>END</td>
    </tr>
</table>
<!-- str = '<td>123</td>' -->
Run Code Online (Sandbox Code Playgroud)

我试过createElement,replaceChild, …

html javascript replace

20
推荐指数
3
解决办法
8万
查看次数

javascript变量对应于具有相同ID的DOM元素

我是javascript的新手,我刚刚发现了一个我从未见过的javascript行为.如果我有一个带有指定id的DOM元素,比如"x",那么在我的javascript中,该元素会自动分配给变量x.我在chrome和safari中看到了这一点.这是javascript的文档功能吗?

例如:

<!DOCTYPE html>
<html>
<head>
</head>
<body>
<form id='x'>
<input type='text' name='info' id='info'/>
<input type='submit' name='submit' value='Complete'/>
</form>
<script type='text/javascript'>
  window.onload = function() {
    alert( x==document.getElementById('x') );
    info.value = 'Test me!';
  }
</script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

加载后,它会提示为true,输入区域将显示"Test me!".如果这是正确的行为,为什么我们需要document.getElementById呢?

javascript dom

16
推荐指数
2
解决办法
4544
查看次数

JavaScript循环输入会创建一个对象数组

我试图循环div中的输入元素,以创建一个对象数组

<div id="time">
  <input type="text" name="from" placeholder="12:00 AM" />
  <input type="text" name="to" placeholder="12:30 AM" />
  <input type="text" name="from" placeholder="13:00 AM" />
  <input type="text" name="to" placeholder="13:30 AM" />
</div>
Run Code Online (Sandbox Code Playgroud)

我正在尝试创建以下对象数组.

 unavailability: [
      { from: '12:00', to: '12:30' },
      { from: '13:00', to: '13:30' }
    ]
Run Code Online (Sandbox Code Playgroud)

这是我到目前为止所尝试的,但结果却截然不同.

var dataArray = []
$("#time").find('input').each(function() {
  var data = {};

  data[this.name] = this.value
  dataArray.push(data);

});
console.log(dataArray)
Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="time">
  <input type="text" name="from" placeholder="12:00 AM" />
  <input type="text" name="to" placeholder="12:30 AM" />
  <input type="text" name="from" …
Run Code Online (Sandbox Code Playgroud)

javascript arrays jquery

16
推荐指数
2
解决办法
2729
查看次数

document.getElementById('mybox')和mybox有什么区别?

可能重复:
document.getElementById("someId")Vs. someId

例如,我有一个带id="mybox"属性的元素,调用它document.getElementById('mybox')mybox直接调用它有什么区别,因为我看到它们在大多数浏览器中都一样吗?jsfiddle显示实例 http://jsfiddle.net/usmanhalalit/TmS3k/

如果没有差别那么为什么document.getElementById('mybox')如此受欢迎,mybox直接打电话是不好的做法?

javascript

14
推荐指数
2
解决办法
532
查看次数

为什么不需要document.getElementById?

1)问题1

以下示例在不使用"document.getElementById('myId')"的情况下工作.为什么这样,可以跳过"document.getElementById('myId')"?

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Javascript question</title>

<script>
window.onload = function(){
    myId.style.color = 'red';
}
</script>

</head>
<body>

<div id=myId>
<p>Make this color red.</p>
</div>

</body>
</html>
Run Code Online (Sandbox Code Playgroud)

2)问题2

我通常存储浏览器对象以减少DOM遍历(参见下面的示例).如果我不将ID存储在变量中,或者它是否已经变量,那么它是否会更多DOM遍历?

window.onload = function(){

var myId = document.getElementById('myId'); /* stored ID that will be used multiple times */

myId.style.color = 'red';
}
Run Code Online (Sandbox Code Playgroud)

谢谢!

javascript variables

14
推荐指数
1
解决办法
3257
查看次数

我真的需要调用getElementById()吗?

可能重复:
IE/Chrome:DOM树元素是全局变量吗?

我在浏览器中偶然发现了一个意外但有用的行为:它为我的html代码中具有ID的每个元素创建一个变量.所以当我有:

<div id="ohlala"> ... </div>
Run Code Online (Sandbox Code Playgroud)

浏览器似乎在幕后运行此代码:

var ohlala = document.getElementById("ohlala");
Run Code Online (Sandbox Code Playgroud)

所以我可以通过以下方式轻松更改该元素的文本:

ohlala.innerHTML="test"
Run Code Online (Sandbox Code Playgroud)

在网上尝试:http://jsfiddle.net/Facby/ 问题是:为什么我需要自己写这个document.getElementById()位?该代码的可移植性如何?我在Opera,FireFox和Chrome上试过,它有效!我可以依靠这个功能吗?浏览器是否总是为每个具有id的元素创建变量?在这种情况下,我必须更加小心我的javascript代码中使用的名称不要与HTML中的类似ID冲突,对吧?

javascript

13
推荐指数
1
解决办法
2375
查看次数

jquery假设元素id?正常的行为?

我有以下index.html:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
        <script src="http://code.jquery.com/jquery-latest.min.js" type="text/javascript">
        </script>
        <script type="text/javascript">
            jQuery(document).ready(function($) {
                console.log(foo); // jQuery assumes foo is an id?
            });
        </script>
    </head>
    <body>
        <div id="foo">i'm a div</div>
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

控制台输出:

<div id="foo">i'm a div</div>

为什么?

javascript jquery

11
推荐指数
1
解决办法
211
查看次数

抓取具有名称="id"的子输入的表单的ID

所以我遇到了一个奇怪的问题......我想抓住一个表格的id说:

<form id="test">
    <input name="id" type="hidden" value/>
</form>
Run Code Online (Sandbox Code Playgroud)

但是运行document.getElementById("test").id不会test按预期返回,而是返回输入name="id".有谁知道这里发生了什么?

这是一个重现问题的小提琴 - > http://jsfiddle.net/jascbbfu/

javascript forms input

11
推荐指数
1
解决办法
674
查看次数

IE中的javascript:getElementById问题

我试图使用JavaScript将单击事件附加到复选框.下面显示的是HTML和JS.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
    <head>
        <title></title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    </head>
    <body>
        <input type="hidden" name="caution_c" value="0">
        <input type="checkbox" id="caution_c" name="caution_c" value="1" tabindex="120">
        <script type="text/javascript">
            var cb = document.getElementById('caution_c');
            cb.onclick = function() {
                alert(1);
            }
        </script>
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

问题是在IE中,click事件不会触发.我缩小了问题的位置.问题是复选框之前有一个隐藏的输入,这两个元素具有相同的名称.我不确定为什么这会导致问题(毕竟,我使用的是getElementById,而隐藏的元素甚至没有id).

这种行为是否有正当理由(仅适用于IE.在Firefox中正常工作......一如既往:()?还有一个很好的解决方法(我可以做document.getElementsByName('caution_c')[1]但我不想...)

html javascript internet-explorer getelementbyid

9
推荐指数
1
解决办法
2万
查看次数

为什么在我可以直接引用JavaScript中的DOM id时使用document.getElementById?

可能重复:
IE/Chrome:DOM树元素是全局变量吗?

我最近发现我可以在javascript中使用来自DOM的任何对象,并直接引用它的id:

<div id="layer">IM A LAYER</div>
<script>
   alert(layer.innerHTML);
</script>
Run Code Online (Sandbox Code Playgroud)

如果这是真的,我使用getElementById方法有什么好处?

javascript dom getelementbyid

8
推荐指数
2
解决办法
5354
查看次数